zookeeper是什么?
zookeeper能夠解決什么問(wèn)題?
- 統(tǒng)一的配置管理洒试,同步更新到所有zk節(jié)點(diǎn),所有app讀取到最新的配置
- 發(fā)布訂閱
- 分布式鎖
zookeeper有哪些特點(diǎn)?
- 一致性
保證數(shù)據(jù)一致性,數(shù)據(jù)按照順序分批入庫(kù)
- 原子性
事務(wù)要么成功要么失敗养匈,不會(huì)局部化
- 單一視圖:
客戶端連接集群中的任一zk節(jié)點(diǎn)秋度,數(shù)據(jù)都是一致的
- 可靠性:
每次對(duì)zk的操作狀態(tài)都會(huì)保存在服務(wù)端
- 實(shí)時(shí)性:
客戶端可以讀取到zk服務(wù)端的最新數(shù)據(jù)
zoo.cfg 配置
配置項(xiàng) | 含義 |
---|---|
tickTime |
用于計(jì)算的時(shí)間單元,比如session超時(shí):N*tickTime 惯疙,其他時(shí)間都是基于tickTime 的倍數(shù)來(lái)計(jì)算的 |
initLimit |
用于集群翠勉,允許從節(jié)點(diǎn)連接并同步到master節(jié)點(diǎn)的初始化連接時(shí)間,以tickTime 的倍數(shù)表示 |
syncLimit |
用于集群霉颠,master與slave之間發(fā)送消息对碌,請(qǐng)求和應(yīng)答時(shí)間長(zhǎng)度(心跳間隔) |
dataDir |
存放數(shù)據(jù)的目錄 |
clientPort |
服務(wù)端口,默認(rèn)2181
|
dataLogDir |
存放日志的目錄 |
數(shù)據(jù)模型
- 樹形結(jié)構(gòu)
/
---/hadoop
------/hadoop/001
---/hive
------/hive/001
------/hive/002
- 每一個(gè)節(jié)點(diǎn)稱為znode蒿偎,可以有子節(jié)點(diǎn)朽们,也可以有數(shù)據(jù)
- 每個(gè)節(jié)點(diǎn)分為臨時(shí)節(jié)點(diǎn)和永久節(jié)點(diǎn)怀读,臨時(shí)節(jié)點(diǎn)在客戶端斷開后消失
- 每個(gè)zk節(jié)點(diǎn)都有各自的版本號(hào),可以通過(guò)命令行來(lái)顯示節(jié)點(diǎn)信息
- 每當(dāng)節(jié)點(diǎn)數(shù)據(jù)發(fā)生變化骑脱,該節(jié)點(diǎn)的版本號(hào)會(huì)累加(樂(lè)觀鎖)
- 刪除/修改過(guò)時(shí)節(jié)點(diǎn)菜枷,版本號(hào)不匹配則會(huì)報(bào)錯(cuò)
- 每個(gè)znode存儲(chǔ)的數(shù)據(jù)不宜過(guò)大,幾k即可
- 節(jié)點(diǎn)可以設(shè)置權(quán)限acl叁丧,可以通過(guò)權(quán)限來(lái)限制用戶訪問(wèn)