入門大數據---HDFS,Zookeeper,ZookeeperFailOverController(簡稱:ZKFC),JournalNode是什么?


HDFS介紹:

簡述:

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

主要成分:

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

數據進入先通過NameNode

 NameNode在Hadoop1.x存在一個,在Hadoop2.x可以有兩個了。推薦使用2.x,因為2.x相比1.x更能快速切換新的NameNode。

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

我畫了個交互圖如下:

 

下面這則漫畫摘自https://blog.csdn.net/hudiefenmu,他很形象的講解了文件的寫入原理,讀取原理以及處理故障原理。

HDFS寫數據原理:

 

 

  HDFS讀數據原理:

  HDFS故障類型和其檢測方法:

 -讀寫故障的處理

  -DataNode故障處理

  -副本布局策略

 

 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的選舉。

結合上面簡要圖如下:

 

系列傳送門


免責聲明!

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



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