HDFS数据的写入过程
HDFS 文件寫入過程
?
Client 發起文件上傳請求, 通過 RPC 與 NameNode 建立通訊, NameNode 檢查目標文件是否已存在, 父目錄是否存在, 返回是否可以上傳
Client 請求第一個 block 該傳輸到哪些 DataNode 服務器上
NameNode 根據配置文件中指定的備份數量及機架感知原理進行文件分配, 返回可用的 DataNode 的地址如: A, B, C
- Hadoop 在設計時考慮到數據的安全與高效, 數據文件默認在 HDFS 上存放三份, 存儲策略為本地一份, 同機架內其它某一節點上一份, 不同機架的某一節點上一份。
Client 請求 3 臺 DataNode 中的一臺 A 上傳數據(本質上是一個 RPC 調用,建立 pipeline ), A 收到請求會繼續調用 B, 然后 B 調用 C, 將整個 pipeline 建立完成, 后逐級返回 client
Client 開始往 A 上傳第一個 block(先從磁盤讀取數據放到一個本地內存緩存), 以 packet 為單位(默認64K), A 收到一個 packet 就會傳給 B, B 傳給 C. A 每傳一個 packet 會放入一個應答隊列等待應答
數據被分割成一個個 packet 數據包在 pipeline 上依次傳輸, 在 pipeline 反方向上, 逐個發送 ack(命令正確應答), 最終由 pipeline 中第一個 DataNode 節點 A 將 pipelineack 發送給 Client
當一個 block 傳輸完成之后, Client 再次請求 NameNode 上傳第二個 block 到服務 1
HDFS 文件讀取過程
總結
以上是生活随笔為你收集整理的HDFS数据的写入过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS的Secondarynameno
- 下一篇: HDFS的API操作-获取FileSys