Hadoop面試準備——HDFS
1、SNN(SecondNameNode)的資料合併過程
觸發合併:設定時間間隔、設定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的地方
SecondNameNode(Hadoop1.0/Hadoop2.0偽分散式下):幫助NN進行元資料的合併,有一定的資料恢復能力
8、DataNode的容錯機制
在DN中,始終維護著指定數量的副本,預設三個,用於保證某個DN宕機後資料的完整性,並且這些副本存放策略是:與DN同一機器上、不同機架上、同一機架的不同機器上,更多的節點隨機儲存到空閒DN上。