溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

zookeeper基本概念和功能

發(fā)布時間:2020-07-28 13:56:14 來源:網(wǎng)絡(luò) 閱讀:1867 作者:馬吉輝 欄目:大數(shù)據(jù)

2019/2/19 星期二

zookeeper基本概念和功能

zookeeper是hadoop生態(tài)圈里面重要的底層的框架,主要為上層的框架提供分布式協(xié)調(diào)服務(wù)的。

hadoop-spof 問題及HA 解決思路
引入集群協(xié)調(diào)服務(wù)框架的必要性

zookeeper 簡介
ZooKeeper 是一個分布式應(yīng)用程序協(xié)調(diào)服務(wù),分布式應(yīng)用程序可以基于它實現(xiàn)同步服務(wù),配置維護和命名服務(wù)等。
目前zookeeper 被廣泛應(yīng)用于hadoop 生態(tài)體系中各種框架的分布式協(xié)調(diào),我們也可以利用zookeeper 來簡化分布式應(yīng)用開發(fā)

Zk簡介
1、zookeeper翻譯成英文叫動物園管理員 動物員管理員的作用是什么呢??
2、讓大象(hadoop),蜂巢(hive) ,豬(pig)能夠更友好的在一起,以上幾種都是hadoop的組件
3、ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)
4、zookeeper其實就是一個軟件,所有安裝了zookeeper的服務(wù)器都叫?zookeeper server
5、zookeeper server 還分為兩類角色,由 leader 和 follower 組成,如果leader掛掉,會有選舉機制,follower直接替換leader ,leader只有一個,剩下的都是follower
6、zookeeper 的所有服務(wù)器中的所有數(shù)據(jù)結(jié)構(gòu)(樹形結(jié)構(gòu))是完全相同的,就是說我搭建一個zookeeper集群,集群里面所有機器的數(shù)據(jù)是一樣的
7、數(shù)據(jù)是樹形結(jié)構(gòu)的,與linux目錄結(jié)構(gòu)是一樣一樣的,zk的每個數(shù)據(jù)目錄就是一個znode
8、我需要運行幾個ZooKeeper? 你運行一個zookeeper也是可以的,但是在生產(chǎn)環(huán)境中,你最好部署3,5,7個節(jié)點。部署的越多,可靠性就越高,當(dāng)然最好是部署奇數(shù)個,偶數(shù)個不是不可以的,但是zookeeper集群是以宕機個數(shù)過半才會讓整個集群宕機的,所以奇數(shù)個集群更佳

zk對hdfs HA高可用集群的作用?
1、qjn集群(edit日志管理系統(tǒng) HA的)需要zk集群去實現(xiàn),協(xié)調(diào)服務(wù)。
2、namenode誰是active誰是standay 記錄在zk中
3、zkfc就是基于zk實現(xiàn)的失敗切換控制器

zk對yarn 集群HA的作用?
1、誰是recoursemanager active誰是從的RM 記錄在zk中
基本同hdfs中在作用一樣

zk對hbase集群HA的作用?
1、誰是hmaster記錄在zk中
2、zk留存了服務(wù)器健康狀態(tài)與是否可用的信息,并提供服務(wù)器故障通知,通過zookeeper cluster可以獲取當(dāng)前系統(tǒng)表.META.的存儲所對應(yīng)的regionserver信息。
3、zk用consensus協(xié)議來保障共享狀態(tài),需要注意的是,一份consensus協(xié)議需要3~5個機器參與(奇數(shù)個)。
//官方解釋
1 保證任何時候,集群中只有一個master
2 存貯所有Region 的尋址入口。
3 實時監(jiān)控Region Server 的狀態(tài),將Region server 的上線和下線信息實時通知給Master
4 存儲Hbase 的schema(模式),包括有哪些table,每個table 有哪些column family

Zk對kafka集群的作用?
1.當(dāng)一個kafka broker啟動后,首先會向zookeeper注冊自己的節(jié)點信息(臨時znode),同時當(dāng)broker和zookeeper斷開連接時,此znode也會被刪除.
2.其中partition leader的位置(host:port)注冊在zookeeper中
3.對于offset的保存和使用,有consumer來控制 offset將會保存在zookeeper中。

小結(jié):
Zookeeper(第三方) 可以實現(xiàn)的分布式協(xié)調(diào)服務(wù)包括:
1、統(tǒng)一名稱服務(wù) //如果把每臺服務(wù)器sever比作一臺一臺的資源的,客戶端拿到的就是名稱服務(wù)資源。
2、配置管理
3、分布式共享鎖 //比如在分布式的每臺服務(wù)器上都需要去修改一個共享資源,這個時候會產(chǎn)生沖突,
4、集群節(jié)點狀態(tài)協(xié)調(diào)(負(fù)載均衡/主從協(xié)調(diào))//服務(wù)器集群動態(tài)感知及失敗切換 zkfc
小結(jié):這上面4點功能并不是zk本身自帶的功能,而是,這些功能可以利用zk來實現(xiàn)。
zookeeper的功能:
也就是第三方,要你查數(shù)據(jù)的時候,可以返還給客戶端,所以具體他是不知道干什么的
(最重要的功能也就是替客戶端保管數(shù)據(jù),為客戶提供數(shù)據(jù)的監(jiān)聽服務(wù))

內(nèi)部自己設(shè)計了自己分布式內(nèi)存數(shù)據(jù)庫(用于保管數(shù)據(jù))

ZooKeeper 數(shù)據(jù)模型和層次命名空間
提供的命名空間與標(biāo)準(zhǔn)的文件系統(tǒng)非常相似。一個名稱是由通過斜線分隔開的路徑名序列所組成的。ZooKeeper 中的每一個節(jié)點是都通過路徑來識別。

ZooKeeper 中的數(shù)據(jù)節(jié)點:

zookeeper基本概念和功能

每一個節(jié)點稱為znode,通過路徑來訪問
每一個znode 維護著:數(shù)據(jù)、stat 數(shù)據(jù)結(jié)構(gòu)(ACL、時間戳及版本號)
znode 維護的數(shù)據(jù)主要是用于存儲協(xié)調(diào)的數(shù)據(jù),如狀態(tài)、配置、位置等信息,每個節(jié)點存儲的數(shù)據(jù)量很小,KB 級別
znode 的數(shù)據(jù)更新后,版本號等控制信息也會更新(增加)
znode 還具有原子性操作的特點:寫--全部替換,讀--全部
znode 有永久節(jié)點和臨時節(jié)點之分:臨時節(jié)點指創(chuàng)建它的session 一結(jié)束,該節(jié)點即被zookeeper 刪除;

zk 性能:
Zookeeper 的讀寫速度非??欤ɑ趦?nèi)存數(shù)據(jù)庫),并且讀的速度要比寫的速度更快。
順序一致性:客戶端的更新順序與它們被發(fā)送的順序相一致。
原子性:更新操作要么成功要么失敗,沒有第三種結(jié)果。
單系統(tǒng)鏡像:無論客戶端連接到哪一個服務(wù)器,客戶端將看到相同的
ZooKeeper 視圖。
可靠性:一旦一個更新操作被應(yīng)用,那么在客戶端再次更新它之前,它的值將不會改變。這個保證將會產(chǎn)生下面兩種結(jié)果:
1 .如果客戶端成功地獲得了正確的返回代碼,那么說明更新已經(jīng)成功。如果不能夠獲得返回代碼(由于通信錯誤、超時等等),那么客戶端將不知道更新操作是否生效。
2 .當(dāng)從故障恢復(fù)的時候,任何客戶端能夠看到的執(zhí)行成功的更新操作將不會被回滾。
實時性:在特定的一段時間內(nèi),客戶端看到的系統(tǒng)需要被保證是實時的。在此時間段內(nèi),任何系統(tǒng)的改變將被客戶端看到,或者被客戶端偵測到。給予這些一致性保證,ZooKeeper 更高級功能的設(shè)計與實現(xiàn)將會變得非常容易,
例如: leader 選舉、隊列以及可撤銷鎖等機制的實現(xiàn)。

zookeeper 集群組件:
同一個zookeeper服務(wù)下的server 有三種,一種是leader server,另一種是follower server,還有一種叫observer server;
leader特殊之處在于它有決定權(quán),具有Request Processor(observer server 與follower server 的區(qū)別就在于不參與leader 選舉)
zk中內(nèi)部leader選舉的算法:paxos

如果客戶端修改zk集群中的數(shù)據(jù)的時候,首先集群中會找到leader 然后在leader上修改本地數(shù)據(jù),然后每臺follower會去同步信息

zk中的端口意思
(其中2181代表:客戶端與服務(wù)器連接所用的端口)
(其中2888代表:leader與follower之間的通信用的端口)
(其中3888代表:follower之間選舉投票用的端口)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI