HDFS數據存儲流程


HDFS即Hadoop Distributed File System, HDFS存儲數據的流程如下:

1、client跟NameNode交互
1.1、client 發消息給NameNode,NameNode檢查client是否有寫的權限。如果有權限,NameNode檢查是否有同名文件,如果沒同名文件,NameNode生成一條新文件的記錄(不包含存放地址信息)
1.2、NameNode向client發送相應的DataNode列表和一個token,地址用來存放數據,token是client向DataNode寫數據前要發送過去的密鑰
2、client跟DataNode交互
2.1、client收到DataNode列表和token后,其DFSOutputStream將數據拆分成一個個塊(一般64MB或128MB),並集群中生成管道,通過管道向DataNode列表中的第一個DataNode寫入數據。 同時,DFSOutputStream生成一個確認列表(ack queue)。
2.2、第一個DataNode寫完后,將根據復制參數將數據塊通過管道復制到第二個DataNode。第二個寫完,將數據塊通過管道復制到第三個DataNode...... 如果復制參數為 3,那么在不同的 DataNode 中至少會創建 3 個塊副本。每個DataNode寫完后,會向NameNode發送塊的信息,NameNode會記錄下來。
2.3、最后一個DataNode創建所需的副本后,向前一個DataNode發送確認信息,前一個往再前一個DataNode發確認信息...... 第一個DataNode向client發送確認信息,client的DFSOutputStream收到確認信息后,將該塊從確認列表(ack queue)中移除
2.4、重復2.1——2.3的過程,直到所有數據塊傳輸完成
2.5、當數據傳送完成,且收到確認信息時,client調用close()方法關閉進程

圖片是簡單的流程,可以參考:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM