Zookeeper 在Hadoop中的應用

jopen 9年前發布 | 24K 次閱讀 ZooKeeper 分布式/云計算/大數據
Zookeeper 簡介

Zookeeper 分布式服務框架是 Apache Hadoop 的一個子項目,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。


Hadoop簡介

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。
用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop主要包含兩部分:HDFS,YARN。

HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。

YARN 主要包含ResourceManager(RM),以及NodeManager(NM),ApplicationManager(AM),Container四個部分組成,其中RM最為核心,作為全局的資源管理器,他主要負責系統的資源管理與分配
關于Hadoop的的更多介紹可參考:http://hadoop.apache.org/

Hadoop面臨的問題

在Hadoop中,不管是HDFS,還是YARN,都存在一個問題,由于HDFS使用NameNode管理眾多的DataNode節點,YARN使用ResourceManager管理系統的資源分配,所以如果NN節點或者是RM節點出現問題,都會導致整個集群不能正常使用,為了解決這個問題Hadoop針對NN以及RM引入了 支持Active/StandBy 模式的HA架構。

正常情況下對于NN以及RM,分別只會有一個Active節點,其他節點為Standby,Active節點負責對外提供服務,當Active的節點由于異常不能對外提供服務時,standby節點會轉化為Active節點,繼續提供服務

Zookeeper幫助Hadoop解決的問題
下文以YARN為例,描述Zookeeper是如何幫助YARN實現HA機制的

  1. 創建鎖節點
    所有的ResourceManager在啟動的時候會競爭寫一個/yarn-leader-election/pseudo-yarn-rm- cluster節點(臨時節點),創建成功的ResourceManager節點變成Active節點,其他的切換為StandBy
  2. 注冊Watcher節點
    所有的standby的ResourceManager節點會向/yarn-leader-election/pseudo-yarn-rm-cluster節點注冊一個Watcher
  3. 主備切換
    當Active的ResourceManager節點出現異常或掛掉時,起在zookeeper上創建的臨時節點也會被刪除,standy的ResourceManager節點檢測到該節點發生變化時,會重新發起競爭,直到產生一個Active節點
  4. 如果集群中存在兩個ResourceManager節點RM1,RM2,在通過競爭操作后,RM1變成了Active后,如果某個時間段RM1由于資源損耗比較嚴重,產生了假死的現象,此時的zookeeper會以為RM1這臺機器出現了故障,于是發起新一輪的競選,選了RM2作為Active,在RM2變成Active后,RM1恢復了服務但是它任然以為自己是Active的,此時就出現了兩個Active的情況,這種情況又稱為“腦裂”,為了解決這種問題可以在創建根節點的時候引入ACL控制,這樣的話當RM1恢復后嘗試更新數據時,會發現對應的節點必須提供RM2的ACL信息才可以更新對應的數據
  5. 在Hadoop中負責解決該問題的組件是Hadoop-common 中的ActiveStandElector組件


HDFS的原理與之ResourceManager類似
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!