hdfs架構分析

hdfs介紹

hadoop的分佈式文件系統hdfs是依據谷歌的GFS論文來實現的,它是一個被設計成爲運行在廉價的通用硬件之上,具有容錯性的文件系統。hdfs的設計使得它能夠提供很高的吞吐量,很適合大規模的數據集合。


hdfs架構

hdfs的設計如下圖所示



hdfsNamenodeDatanode組成,NamenodeDatanode可以在任何異構的機器上運行。hdfs由java語言開發,這些機器上都安裝jvm虛擬機,所以都可以很輕鬆的部署NamenodeDatanode。比較典型的部署場景是一臺機器上只運行一個Namenode實例,而集羣中的其它機器分別運行一個Datanode實例。這種架構並不排斥在一臺機器上運行多個Datanode,只不過這樣的情況比較少見。

集羣中單一Namenode的結構大大簡化了系統的架構。Namenode是所有HDFS元數據的仲裁者和管理者,這樣,用戶數據永遠不會流過Namenode,極大的緩解了中心節點namenode的壓力。

hdfs具有高可用的特點,即使一臺機器宕機,存在hdfs裏的數據也不會丟失,這就要歸功於hdfs的副本的特點了。HDFS被設計成能夠在一個大集羣中跨機器可靠地存儲超大文件。它將每個文件存儲成一系列的數據塊,除了最後一個,所有的數據塊都是同樣大小的。爲了容錯,文件的所有數據塊都會有副本。每個文件的數據塊大小和副本系數都是可配置的。應用程序可以指定某個文件的副本數目。副本系數可以在文件創建的時候指定,也可以在之後改變。

Namenode全權管理數據塊的複製,它週期性地從集羣中的每個Datanode接收心跳信號和塊狀態報告(Blockreport)。接收到心跳信號意味着該Datanode節點工作正常。塊狀態報告包含了一個該Datanode上所有數據塊的列表。

如下圖所示



hdfs讀寫

hdfs的讀文件流程如下


客戶端首先訪問namenode,得到文件的塊的存儲位置,然後去datanode讀取對應的數據塊,然後再告知namenode關閉文件。

hdfs寫文件的流程如下


客戶端首先訪問namenode,得到文件的分配到的塊所在的datanode的服務器位置,然後寫數據到第一個datanode,然後datanode依次向其他副本所在的datanode寫入數據,等待所有的數據都寫好了,九返回客戶端寫入成功,最終告知namenode關閉客戶端。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章