hadoop 中HDFC client 寫數據的基本流程
一、要了解HDFS客戶端寫數據的過程,首先需要明白namenode和datanode
namenode:主要保存數據的元數據,它維護著文件系統樹及整棵樹內所有的文件和目錄,說的直白點就是文件目錄的管理以及Block的管理,體現的是一個管理者的身份;
datanode:存儲並檢索數據塊的作用,也就是說數據的存儲是有datanode來直接操作的,在這體現的是一個工作者的身份,並且會定期的向namenode匯報自身的情況,
namenode 就可以比較清楚的知道其管理的每個datanode的具體情況,在數據存儲的時候就知道選擇那些datanode來存儲
二、1、客戶端需要上傳文件,首先會向namenode請求,告訴namenode需要上傳的文件的相關信息,例如路徑文件名稱大小等等,namenode會告訴客戶端是否可以上傳;如果允許客戶端上傳,(默認配置的塊的大小是128M)
如果文件大於128M,客戶端會對文件進行分割處理,這裏就做三份處理,這時候客戶端會請求namenode,提供相關塊的信息以及需要存儲的備份數(這裏默認3份),namenode會返回相關datanode的信息給客戶端(如何選擇datanode?),
namenode會告訴客戶端 服務器1,服務器2,服務器3即將上傳的三個datanode服務器地址,這裏客戶端就會根據返回的地址進行文件的上傳;
2、客戶端上傳時,namenode返回的是三臺服務器的地址,那麽客戶端在上傳時其實每次只針對一個datanode,也就是說客戶端不需要分別向三個datanode上傳文件,比如客戶端選擇服務器1上傳,服務器2和3其實在客戶端上傳的時候,
服務器1已經和服務器2建立了上傳通道,服務器2和服務器3也建立上傳的通道,也就是說其實三臺服務器的上傳基本是同步的,如果每次都要分別取處理,這樣效率也低,如果一個服務器上傳出現問題,這樣容錯的能力也相應的降低;
只要保證服務器1成功,上傳就是成功,HDFS內部應該是有機制去處理2-3過程中上傳失敗的容錯機制;同理文件的第二個塊也是和第一個塊一樣的上傳;
三、以上只是大致描述一下HDFS客戶端上傳的一個流程,其中還有很多細節需要在去深究,例如,上傳時,namenode是如何去選擇datanode的,客戶端是如何與namenode之間進行通信的等等,最後還是通過自己畫的一張圖來直觀的表示上傳的大致流程
hadoop 中HDFC client 寫數據的基本流程