亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于ZooKeeper原理剖析

 更新時間:2025年02月25日 08:53:41   作者:Hello.Reader  
ZooKeeper是一種分布式、高可用性的協(xié)調(diào)服務(wù),主要用于幫助系統(tǒng)避免單點故障和建立可靠的應(yīng)用程序,它通過Leader、Follower和Observer的角色來協(xié)調(diào)節(jié)點,并提供分布式協(xié)作服務(wù)和維護配置信息,ZooKeeper在HDFS、YARN、HBase、SmallFS和Kafka等大數(shù)據(jù)產(chǎn)品中都有廣泛的應(yīng)用

1. ZooKeeper簡介

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

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

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

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

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

上圖中各部分的功能說明如下表所示。

名稱描述
Leader在ZooKeeper集群中只有一個節(jié)點作為集群的領(lǐng)導(dǎo)者,由各Follower通過ZooKeeper Atomic Broadcast(ZAB)協(xié)議選舉產(chǎn)生,主要負責(zé)接收和協(xié)調(diào)所有寫請求,并把寫入的信息同步到Follower和Observer。
FollowerFollower的功能有兩個:1.每個Follower都作為Leader的儲備,當(dāng)Leader故障時重新選舉Leader,避免單點故障。2.處理讀請求,并配合Leader一起進行寫請求處理。
ObserverObserver不參與選舉和寫請求的投票,只負責(zé)處理讀請求、并向Leader轉(zhuǎn)發(fā)寫請求,避免系統(tǒng)處理能力浪費。
ClientZooKeeper集群的客戶端,對ZooKeeper集群進行讀寫操作。例如HBase可以作為ZooKeeper集群的客戶端,利用ZooKeeper集群的仲裁功能,控制其HMaster的“Active”和“Standby”狀態(tài)。

如果集群啟用了安全服務(wù),在連接ZooKeeper時需要進行身份認證,認證方式有以下兩種:

  • keytab方式:需要從MRS集群管理員處獲取一個“人機”用戶,用于登錄MRS平臺并通過認證,并且獲取到該用戶的keytab文件。
  • 票據(jù)方式:從MRS集群管理員處獲取一個“人機”用戶,用于后續(xù)的安全登錄,開啟Kerberos服務(wù)的renewable和forwardable開關(guān)并且設(shè)置票據(jù)刷新周期,開啟成功后重啟kerberos及相關(guān)組件。

注意:

  • 默認情況下,用戶的密碼有效期是90天,所以獲取的keytab文件的有效期是90天。
  • Kerberos服務(wù)的renewable、forwardable開關(guān)和票據(jù)刷新周期的設(shè)置在Kerberos服務(wù)的配置頁面的“系統(tǒng)”標(biāo)簽下,票據(jù)刷新周期的修改可以根據(jù)實際情況修改“kdc_renew_lifetime”和“kdc_max_renewable_life”的值。

3. ZooKeeper原理

寫請求

  • Follower或Observer接收到寫請求后,轉(zhuǎn)發(fā)給Leader。
  • Leader協(xié)調(diào)各Follower,通過投票機制決定是否接受該寫請求。
  • 如果超過半數(shù)以上的Leader、Follower節(jié)點返回寫入成功,那么Leader提交該請求并返回成功,否則返回失敗。
  • Follower或Observer返回寫請求處理結(jié)果。

只讀請求

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

4. ZooKeeper和HDFS的關(guān)系

ZooKeeper與HDFS的關(guān)系如下圖所示。

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

  • HDFS NameNode的ZKFC連接到ZooKeeper,把主機名等信息保存到ZooKeeper中,即“/hadoop-ha”下的znode目錄里。先創(chuàng)建znode目錄的NameNode節(jié)點為主節(jié)點,另一個為備節(jié)點。HDFS NameNode Standby通過ZooKeeper定時讀取NameNode信息。
  • 當(dāng)主節(jié)點進程異常結(jié)束時,HDFS NameNode Standby通過ZooKeeper感知“/hadoop-ha”目錄下發(fā)生了變化,NameNode會進行主備切換。

5. ZooKeeper和YARN的關(guān)系

ZooKeeper與YARN的關(guān)系如下圖所示。

  • 在系統(tǒng)啟動時,ResourceManager會嘗試把選舉信息寫入ZooKeeper,第一個成功寫入ZooKeeper的ResourceManager被選舉為Active ResourceManager,另一個為Standby ResourceManager。Standby ResourceManager定時去ZooKeeper監(jiān)控Active ResourceManager選舉信息。
  • Active ResourceManager還會在ZooKeeper中創(chuàng)建Statestore目錄,存儲Application相關(guān)信息。當(dāng)Active ResourceManager產(chǎn)生故障時,Standby ResourceManager會從Statestore目錄獲取Application相關(guān)信息,恢復(fù)數(shù)據(jù)。

6. ZooKeeper和HBase的關(guān)系

ZooKeeper與HBase的關(guān)系如下圖所示。

  • HRegionServer以Ephemeral node的方式注冊到ZooKeeper中。其中ZooKeeper存儲HBase的如下信息:HBase元數(shù)據(jù)、HMaster地址。
  • HMaster通過ZooKeeper隨時感知各個HRegionServer的健康狀況,以便進行控制管理。
  • .HBase也可以部署多個HMaster,類似HDFS NameNode,當(dāng)HMaster主節(jié)點出現(xiàn)故障時,HMaster備用節(jié)點會通過ZooKeeper獲取主HMaster存儲的整個HBase集群狀態(tài)信息。即通過ZooKeeper實現(xiàn)避免HBase單點故障問題的問題。

7. Zookeeper和SmallFS的配合關(guān)系

FGCService的部署模式為HA模式。HA(High Availability)模式目的是防止單節(jié)點故障導(dǎo)致服務(wù)不可用。為了支持HA模式,F(xiàn)GCService依賴于ZooKeeper。

8. ZooKeeper和Kafka的配合關(guān)系

ZooKeeper與Kafka的關(guān)系如下圖 ZooKeeper和Kafka的關(guān)系所示。

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

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • RabbitMQ 在 Spring Boot 項目中的深度應(yīng)用與實戰(zhàn)解析

    RabbitMQ 在 Spring Boot 項目中的深度應(yīng)用與實戰(zhàn)解析

    RabbitMQ 作為一款廣受歡迎的開源消息隊列系統(tǒng),遵循 AMQP 協(xié)議,能夠在分布式系統(tǒng)里實現(xiàn)應(yīng)用程序之間的異步通信、解耦以及流量削峰等關(guān)鍵功能,這篇文章主要介紹了RabbitMQ 在 Spring Boot 項目中的深度應(yīng)用與實戰(zhàn)解析,需要的朋友可以參考下
    2025-01-01
  • java實現(xiàn)簡單登錄界面的實戰(zhàn)過程

    java實現(xiàn)簡單登錄界面的實戰(zhàn)過程

    學(xué)習(xí)JAVA的過程當(dāng)中,登陸界面是多數(shù)人第一個實現(xiàn)的小程序,下面這篇文章主要給大家介紹了關(guān)于利用java實現(xiàn)簡單登錄界面的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • java增強for循環(huán)的實現(xiàn)方法

    java增強for循環(huán)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava增強for循環(huán)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • java實現(xiàn)python session功能代碼實例

    java實現(xiàn)python session功能代碼實例

    這篇文章主要介紹了java實現(xiàn)python session功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java中如何反射獲取一個類

    java中如何反射獲取一個類

    大家說說對java反射的理解,使用反射如何獲取一個類,下面小編給大家整理一些資料,關(guān)于java中如何反射獲取一個類,有需要的朋友可以參考下
    2015-08-08
  • 阿里SpringBoot應(yīng)用自動化部署實現(xiàn)IDEA版Jenkins

    阿里SpringBoot應(yīng)用自動化部署實現(xiàn)IDEA版Jenkins

    這篇文章主要為大家介紹了阿里SpringBoot應(yīng)用自動化部署實現(xiàn)IDEA版Jenkins過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Java核心庫實現(xiàn)簡單的AOP

    Java核心庫實現(xiàn)簡單的AOP

    這篇文章主要介紹了如何用Java核心庫實現(xiàn)簡單的AOP,幫助大家為了更好的理解和學(xué)習(xí)AOP的思想,感興趣的朋友可以了解下
    2020-08-08
  • Java 初識CRM之項目思路解析

    Java 初識CRM之項目思路解析

    本篇文章意在幫助大家了解CRM的一些基本概念,介紹相關(guān)業(yè)務(wù),后文也將會將基于筆者所在公司的業(yè)務(wù)詳細闡述CRM各模塊,感興趣的朋友快來看看吧
    2021-11-11
  • Java獲取文件的類型和擴展名的實現(xiàn)方法

    Java獲取文件的類型和擴展名的實現(xiàn)方法

    這篇文章主要介紹了Java獲取文件的類型和擴展名的實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 用Java將字符串的首字母轉(zhuǎn)換大小寫

    用Java將字符串的首字母轉(zhuǎn)換大小寫

    在項目開發(fā)的時候會需要統(tǒng)一字符串的格式,比如首字母要求統(tǒng)一大寫或小寫,那用Java如何實現(xiàn)這一功能?下面一起來學(xué)習(xí)學(xué)習(xí)。
    2016-08-08

最新評論