入門Hadoop系列---HDFS,Zookeeper,ZookeeperFailOverController(簡稱:ZKFC),JournalNode是什麼?

HDFS介紹:html

簡述:緩存

 Hadoop Distributed File System(HDFS)是一種分佈式文件系統,設計用於在商用硬件上運行。它與現有的分佈式文件系統有許多類似之處。可是,與其餘分佈式文件系統的差別很大。HDFS具備高度容錯能力,旨在部署在低成本硬件上。HDFS提供對應用程序數據的高吞吐量訪問,適用於具備大型數據集的應用程序。HDFS放寬了一些POSIX要求,以實現對文件系統數據的流式訪問。HDFS最初是做爲Apache Nutch網絡搜索引擎項目的基礎設施而構建的。HDFS是Apache Hadoop Core項目的一部分。網絡

主要成分:分佈式

 HDFS主要由NameNode和DataNode組成。NameNode負責存儲數據的元數據信息和數據的偏移量。DataNode負責存儲數據。oop

數據進入先經過NameNode搜索引擎

 NameNode在Hadoop1.x存在一個,在Hadoop2.x能夠有兩個了。推薦使用2.x,由於2.x相比1.x更能快速切換新的NameNode。spa

 NameNode裏面由EditLog和FsImage組成,EdtiLog記錄的是操做日誌,FsImage記錄的全部文件的元數據(包括:文件大小,文件名稱,建立時間等等)。另外FsImage還記錄了文件的偏移量,不過這個偏移量是由DataNode作心跳機制反饋給NameNode的。當NameNode啓動或者觸發配置的檢查點時,它會讀取EditLog和FsImage,並使用EditLog應用到FsImage並加載到緩存,而後刷新EditLog。設計

我畫了個交互圖以下:3d

 

Quorum Journal Manager :日誌

簡述:

因爲部署了兩個NameNode,而且僅僅容許一臺(ActiveNode)對外提供服務,另外一臺(StandByNode)在NameNode不可用的時候切換過去,這樣就要保證StandBy數據是最新的。 而JournalManager就是接受ActiveNode的變更日誌,而後StandBy節點讀取同步更新數據。

結合上面的NameNode我畫了個圖以下:

 

  

Zookeeper和ZookeeperFailOverController介紹:

 簡述:

Zookeeper簡稱ZK,ZookeeperFailOverController簡稱ZKFC

上面使用JournalManager遇到故障的時候須要手動切換NameNode節點,這樣處理會很不及時,因此必須想個辦法自動切換,這樣就有了Zookeeper,而後配套的出現了ZKFC,ZKFC和NameNode是一一對應的,它是一個守護進程,它負責和ZK通訊,而且時刻檢查NameNode的健康情況。它經過不斷的ping,若是能ping通,則說明節點是健康的。而後ZKFC會和ZK保持一個持久通話,及Session對話,而且ActiveNode在ZK裏面記錄了一個"鎖",這樣就會Prevent其它節點成爲ActiveNode,當會話丟失時,ZKFC會發通知給ZK,同時刪掉"鎖",這個時候其它NameNode會去爭搶並創建新的「鎖」,這個過程叫ZKFC的選舉。

結合上面簡要圖以下:

 

系列傳送門

相關文章
相關標籤/搜索