五月婷婷丁香性爱|j久久一级免费片|久久美女福利视频|中文观看在线观看|加勒比四区三区二|亚洲裸女视频网站|超碰97AV在线69网站免费观看|有码在线免费视频|久久青青日本视频|亚洲国产AAAA

ZooKeeper簡介

ZooKeeper是一個(gè)開源的,高可靠的,分布式一致性協(xié)調(diào)服務(wù)。在大數(shù)據(jù)產(chǎn)品中主要提供兩個(gè)功能:

  • 幫助系統(tǒng)避免單點(diǎn)故障,建立可靠的應(yīng)用程序。
  • 提供分布式協(xié)作服務(wù)和維護(hù)配置信息。

ZooKeeper結(jié)構(gòu)

ZooKeeper結(jié)構(gòu)

ZooKeeper結(jié)構(gòu)

ZooKeeper集群中的節(jié)點(diǎn)分為三種角色:Leader、Follower和Observer,其結(jié)構(gòu)和相互關(guān)系如圖所示。通常來說,需要在集群中配置奇數(shù)個(gè)(2N+1)ZooKeeper服務(wù),至少(N+1)個(gè)投票才能成功的執(zhí)行寫操作。

  • Leader
  • 在ZooKeeper集群中只有一個(gè)節(jié)點(diǎn)作為集群的Leader,由各Follower通過ZooKeeper Atomic Broadcast(ZAB)協(xié)議選舉產(chǎn)生,主要負(fù)責(zé)接收和協(xié)調(diào)所有寫請求,并把寫入的信息同步到Follower和Observer。

  • Follower
  • Follower的功能有兩個(gè):

    1、每個(gè)Follower都作為Leader的儲備,當(dāng)Leader故障時(shí)重新選舉Leader,避免單點(diǎn)故障。

    2、處理讀請求,并配合Leader一起進(jìn)行寫請求處理。

  • Observer
  • Observer不參與選舉和寫請求的投票,只負(fù)責(zé)處理讀請求、并向Leader轉(zhuǎn)發(fā)寫請求,避免系統(tǒng)處理能力浪費(fèi)。

  • Client
  • ZooKeeper集群的客戶端,對ZooKeeper集群進(jìn)行讀寫操作。例如HBase可以作為ZooKeeper集群的客戶端,利用ZooKeeper集群的仲裁功能,控制其HMaster的“Active”和“Standby”狀態(tài)。

ZooKeeper原理

寫請求:

1、Follower或Observer接收到寫請求后,轉(zhuǎn)發(fā)給Leader。

2、Leader協(xié)調(diào)各Follower,通過投票機(jī)制決定是否接受該寫請求。

3、如果超過半數(shù)以上的Leader、Follower節(jié)點(diǎn)返回寫入成功,那么Leader提交該請求并返回成功,否則返回失敗。

4、Follower或Observer返回寫請求處理結(jié)果。

只讀請求:

客戶端直接向Leader、Follower或Observer讀取數(shù)據(jù)。

ZooKeeper與其他組件的關(guān)系

ZooKeeper和HDFS的關(guān)系

ZooKeeper和HDFS的關(guān)系

ZKFC(ZKFailoverController)作為一個(gè)ZooKeeper集群的客戶端,用來監(jiān)控NameNode的狀態(tài)信息。ZKFC進(jìn)程僅在部署了NameNode的節(jié)點(diǎn)中存在。HDFS NameNode的Active和Standby節(jié)點(diǎn)均部署有ZKFC進(jìn)程。


  • HDFS NameNode的ZKFC連接到ZooKeeper,把主機(jī)名等信息保存到ZooKeeper中,即“/hadoop-ha”下的znode目錄里。先創(chuàng)建znode目錄的NameNode節(jié)點(diǎn)為主節(jié)點(diǎn),另一個(gè)為備節(jié)點(diǎn)。HDFS NameNode Standby通過ZooKeeper定時(shí)讀取NameNode信息。


  • 當(dāng)主節(jié)點(diǎn)進(jìn)程異常結(jié)束時(shí),HDFS NameNode Standby通過ZooKeeper感知“/hadoop-ha”目錄下發(fā)生了變化,NameNode會進(jìn)行主備切換。

ZooKeeper和YARN的關(guān)系

ZooKeeper和YARN的關(guān)系

在系統(tǒng)啟動(dòng)時(shí),ResourceManager會嘗試把選舉信息寫入ZooKeeper,第一個(gè)成功寫入ZooKeeper的ResourceManager被選舉為Active ResourceManager,另一個(gè)為Standby ResourceManager。Standby ResourceManager定時(shí)去ZooKeeper監(jiān)控Active ResourceManager選舉信息。


  • Active ResourceManager還會在ZooKeeper中創(chuàng)建Statestore目錄,存儲Application相關(guān)信息。當(dāng)Active ResourceManager產(chǎn)生故障時(shí),Standby ResourceManager會從Statestore目錄獲取Application相關(guān)信息,恢復(fù)數(shù)據(jù)。

ZooKeeper和HBase的關(guān)系

ZooKeeper和HBase的關(guān)系

RegionServer以Ephemeral node的方式注冊到ZooKeeper中。其中ZooKeeper存儲HBase的如下信息:HBase元數(shù)據(jù)、HMaster地址。


  • HMaster通過ZooKeeper隨時(shí)感知各個(gè)RegionServer的健康狀況,以便進(jìn)行控制管理。


  • HBase也可以部署多個(gè)HMaster,類似HDFS NameNode,當(dāng)HMaster主節(jié)點(diǎn)出現(xiàn)故障時(shí),HMaster備用節(jié)點(diǎn)會通過ZooKeeper獲取主HMaster存儲的整個(gè)HBase集群狀態(tài)信息。即通過ZooKeeper實(shí)現(xiàn)避免HBase單點(diǎn)故障問題的問題。

ZooKeeper和Kafka的關(guān)系

ZooKeeper和Kafka的關(guān)系

Broker端使用ZooKeeper來注冊broker信息,并進(jìn)行partition leader選舉。


  • Consumer端使用ZooKeeper來注冊consumer信息,其中包括consumer消費(fèi)的partition列表等,同時(shí)也用來發(fā)現(xiàn)broker列表,并和partition leader建立socket連接,并獲取消息。

ZooKeeper開源增強(qiáng)特性

  • 日志增強(qiáng)

    安全模式下,Ephemeral node(臨時(shí)節(jié)點(diǎn))在session過期之后就會被系統(tǒng)刪除,在審計(jì)日志中添加Ephemeral node被刪除的審計(jì)日志,以便了解當(dāng)時(shí)Ephemeral node的狀態(tài)信息。

    安全模式下,Ephemeral node(臨時(shí)節(jié)點(diǎn))在session過期之后就會被系統(tǒng)刪除,在審計(jì)日志中添加Ephemeral node被刪除的審計(jì)日志,以便了解當(dāng)時(shí)Ephemeral node的狀態(tài)信息。

  • ZooKeeper SSL通信(Netty連接)

    ZooKeeper設(shè)計(jì)最初含有Nio包,且不能較好的支持3.5版本后的SSL。為了解決這個(gè)問題,Netty被加入到ZooKeeper中。若用戶需要使用SSL,啟用Netty并設(shè)置Server端和Client端的相關(guān)參數(shù)即可。

    ZooKeeper設(shè)計(jì)最初含有Nio包,且不能較好的支持3.5版本后的SSL。為了解決這個(gè)問題,Netty被加入到ZooKeeper中。若用戶需要使用SSL,啟用Netty并設(shè)置Server端和Client端的相關(guān)參數(shù)即可。