天天看點

HDFS- 寫入檔案分步

HDFS- 寫入檔案分步
  • 第1步用戶端發去

    CreeteFile

    ,目的時擷取

    HDFS

    檔案的輸出流,

    namenode

    收到請求後會檢測路徑的合法性,以及權限。原生Hadoop的權限管理不是很完善,工作中用的是CDH(商業版Hadoop)如果檢測通過,

    namenode

    會為這個檔案生成塊的中繼資料資訊(比如:1為檔案切塊2配置設定塊id3配置設定每個塊存在那個

    datanode

    上),然後将原屬資訊封裝到輸出流中,傳回給用戶端。
  • 第2,3步

    Client

    拿出輸出流之後,采用

    PipeLine

    (資料流管道)機制做資料的上傳發送,這樣設計的目的在于利用每台服務的帶寬,最小化推送資料的延時。

    packet

    是一個

    64Kb

    大小的資料包,即用戶端在發送檔案塊時,會在檔案塊變成一個一個的資料發送。
  • 第4.5步- 每台

    datanode

    收到

    packet

    ,會向上遊

    datanode

    ack

    确認,如果接受失敗,會進行重發
  • 第6步 當一個檔案上傳完後,關流。

分步

上傳兩塊檔案到HDFS,先上傳第一塊。DN1的選擇離Client最近的一個。DN2,DN3是由DN1決定的

HDFS- 寫入檔案分步

再上傳第二塊,選擇的Datanode可能和第一塊不在同一個。

HDFS- 寫入檔案分步

第三步

HDFS- 寫入檔案分步

繼續閱讀