Zookeeper 在Hadoop中的應用


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類似



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM