HDFS的容錯和文件的讀寫

大數據交流羣QQ:494721467

HDFS容錯:

如何使文件體統能夠容忍節點故障,並且不丟失任何的數據也就是HDFS的容錯機制


1、心跳機制:

namenode 和datanode是維護心跳的檢測。可能網絡故障,導致namenode接收不到datanode的心跳包,namenode就不會將任何新的I/O操作派發給那個


Datanode,所以datanode上的數據是無效的。namenode會檢測到文件塊的副本數目小於設置值,如果小於就自動開始複製新的副本並分發到其他的datanode


節點上。


2、檢查文件的塊的完整性

HDFS會檢索到文件或者某個節點塊的大小是否一致,不一致,會從其他的Datanode節點上獲取該快的副本



3、集羣的負載均衡

節點的丟失或者增加會使數據分佈不均,當某個Datanode節點的空閒空間大於一個臨界點值時,HDFS會自動從其他節點把數據遷移過來


4、namenode上的FSlmage 和Edit log文件

FSlmage 和Edit log文件是HDFS上的核心數據結構。當他們損壞HDFS將會失效


5、文件的刪除

刪除一個文件,並不會馬上從namenode上移動,設置的時間由hdfs-site.xml問價的配置,fs.trash.interval決定設置時間(時間單位爲秒)


-------------------------------------------------------------------------


HDFS讀取文件和寫入文件

1、hdfs會將文件的切片成塊的存儲到datanod各個節點中,而文件的數據塊的佈局是由namenode和hdfs-site.xml中配置dfs.replication一起決定的。


dfs.replication表示該文件在hdfs中的副本數,它默認爲3。


2、hdfs客戶端想要讀取文件,首先要訪問namenode,並告訴它要讀取的文件,在這之前,hdfs會對客戶的身份信息進行驗證:一種是通過信任的客戶端,


由其指定的用戶名,另一種是通過kerberos等強制驗證機制來完成。訪問文件要檢查文件的所有者和訪問權限。如果文件存在用戶對它有訪問權限,


nanmenode會提供文件的信息及塊的datanode列表。hdfs客戶端就可以訪問最合適的datanode,直到文件hdfs動關閉文件流


寫入文件:

hdfs客戶端通過hdfs相關的api發送請求,打開一個要寫入的文件,這個請求將會被namenode接收到,並建立該文件的元數據,但新建的文件元數據和任何


數據塊沒有關聯。客戶端收到提示成功打開文件時,就開始往裏面寫數據,當客戶端將數據寫入流時。數據會被拆成數據包,並將數據包保存在內存的隊


列中。客戶端有個獨立線程,它從隊列中讀取數據包,並向namenode請求一組datanode列表,以便寫入下個數據塊的多個副本。hdfs直接連接到列表,從


而建立了數據塊的管道,寫入到磁盤中。


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