1. 程式人生 > >HDFS寫資料詳細流程

HDFS寫資料詳細流程

1、 client 發起檔案上傳請求,通過 RPC 與 NameNode 建立通訊,NameNode
檢查目標檔案是否已存在,父目錄是否存在,返回是否可以上傳;
2、 client 請求第一個 block 該傳輸到哪些 DataNode 伺服器上;
3、 NameNode 根據配置檔案中指定的備份數量及機架感知原理進行檔案分
配,返回可用的 DataNode 的地址如:A,B,C;
注:Hadoop 在設計時考慮到資料的安全與高效,資料檔案預設在 HDFS 上存放
三份,儲存策略為本地一份,同機架內其它某一節點上一份,不同機架的某一
節點上一份。
4、 client 請求 3 臺 DataNode 中的一臺 A 上傳資料(本質上是一個 RPC 調
用,建立 pipeline),A 收到請求會繼續呼叫 B,然後 B 呼叫 C,將整個
pipeline 建立完成,後逐級返回 client;
5、 client 開始往 A 上傳第一個 block(先從磁碟讀取資料放到一個本地內
存快取),以 packet 為單位(預設 64K),A 收到一個 packet 就會傳給 B,
B 傳給 C;A 每傳一個 packet 會放入一個應答佇列等待應答。
6、 資料被分割成一個個 packet 資料包在 pipeline 上依次傳輸,在
pipeline 反方向上,逐個傳送 ack(命令正確應答),最終由 pipeline
中第一個 DataNode 節點 A 將 pipeline ack 傳送給 client;
7、 當一個 block 傳輸完成之後,client 再次請求 NameNode 上傳第二個
block 到伺服器。