Hadoop學習——HDFS

1、SNN(SecondaryNameNode)的數據合併過程

觸發合併:設定時間間隔、設定edits文件大小、Hadoop重啓

合併時,SNN會將NameNode中edits文件和fsimage文件拷貝過來,這時NN生成新的edits文件會繼續記錄新的讀寫請求。在SNN中將拷貝過來的fsimage和edits文件合併生成新的fsimage,並將其發送到NN中替換之前fsimage文件。

2、NameNode的實現

NN中維護着HDFS的元數據信息,並且將其存儲內存中,利用三個文件實現的,edits(保存對數據的操作記錄),fsimage(保存大部分的元數據),fstime(保存最近一次檢查的時間)。當有寫請求時,NN會先將請求寫入edits文件,成功後修改內存,然後客戶端返回處理結果。

3、DataNode的實現

在Hadoop中,數據是以塊的形式存儲在DN上。DN會不斷向NN發送心跳報告,用於告知NN存活狀態,並且接受NN發送過來的處理信息,然後對數據進行相應的處理。

DN在一定時間內沒有被NN接受到其發送的心跳報告,NN會認爲該DN宕掉,然後會將該DN維護的數據copy到其它存活的DN上。

4、HDFS的讀過程

客戶端Client,向NN發起讀取文件的請求;

NN會檢查Client權限,文件是否存在等信息,若正確,Client可以獲取到文件塊的存儲位置;

Client會選擇距離近的塊中進行讀取文件;

讀取結束後,會通知NN讀取結束。

5、HDFS的寫過程

客戶端Client,向NN發送寫文件的請求;

NN檢查要創建的文件是否存在,Client是否有權限,若正確,則記錄到edtis中;

Client自行將數據進行切分多個packet,並寫入隊列中,向NN請求新的block,獲取存儲的DN列表;

Client只將數據隊列發送到一個DN上,DN之間會通過pipeline(管道)寫入塊;

存儲成功返回成功信息給Client;

Client通知NN寫入結束。

6、HDFS的刪除過程

客戶端Client將要刪除的數據發送到NN上;

NN會將自身存儲的數據相關信息刪除,但並不會立即通知DN刪除數據;

在DN發送心跳報告時,纔會通知刪除數據。

7、HDFS的角色劃分

block:數據塊,HDFS中最基本的存儲單位,默認128M

NameNode:保存HDFS的元數據信息,包含文件和block的關係,block的數量、block和DN的關係

DataNode:真正存儲block的地方

SecondaryNameNode(Hadoop1.0/Hadoop2.0僞分佈式下):幫助NN進行元數據的合併,有一定的數據恢復能力

8、DataNode的容錯機制

在DN中,始終維護着指定數量的副本,默認三個,用於保證某個DN宕機後數據的完整性,並且這些副本存放策略是:與DN同一機器上、不同機架上、同一機架的不同機器上,更多的節點隨機存儲到空閒DN上。

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