HDFS 讀/寫數據流程


1. HDFS 寫數據流程

  1. 客戶端通過 Distributed FileSystem 模塊向 NameNode 請求上傳文件, NameNode 檢查目標文件是否已存在,父目錄是否存在;
  2. NameNode 返回是否可以上傳;
  3. 客戶端請求NameNode,獲取第一個 Block 上傳到哪幾個 DataNode 服務器上;
  4. NameNode 返回3個 DataNode 節點, 分別為 dn1, dn2, dn3;
  5. 客戶端通過 FSDataOutputStream 模塊請求 dn1 上傳數據, dn1 收到請求會繼續調用 dn2, 然后 dn2 調用 dn3,將這個通信管道建立完成;
  6. dn1, dn2, dn3 逐級應答客戶端;
  7. 客戶端開始往 dn1 上傳第一個 Block (先從磁盤讀取數據放到一個本地內存緩存), 以 Packet 為單位, dn1 收到一個 Packet 就會傳給 dn2, dn2 傳給 dn3;dn1 每傳一個 packet 會放入一個應答隊列等待應答;
  8. 當一個 Block 傳輸完成之后,客戶端再次請求 NameNode 上傳第二個 Block 的服務器。(重復執行 3-7 步)。

1.1 網絡拓撲--節點距離計算

  • 在 HDFS 寫數據的過程中, NameNode 會選擇距離待上傳數據最近距離的 DataNode 接收數據。
  • 如何計算最近距離?
    • 節點距離:兩個節點到達最近的共同祖先的距離總和。

1.2 機架感知(副本存儲節點選擇)

2. HDFS 讀數據流程


**參考資料:** - [HDFS 文件IO流操作](https://www.bilibili.com/video/av32081351/?p=68)


免責聲明!

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



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