HDFS文件讀寫流程(2)

      網友投稿 713 2022-05-29

      因為在之前的幾篇博客中,小菌已經為大家帶來了HDFS的基本概念及一些常用操作,這篇博客小菌將接著HDFS文件系統介紹的內容,為大家帶來HDFS的讀寫流程!

      文章目錄

      文件寫入過程(重點)

      文件讀取過程(重點)

      HDFS數據的完整性

      文件寫入過程(重點)

      詳細步驟解析:

      1、 client發起文件上傳請求,通過

      RPC

      與NameNode建立通訊,NameNode檢查目標文件是否已存在,父目錄是否存在,返回是否可以上傳;RPC 指的是 遠程過程調用。是集群中多個組件、多個模塊進行數據通信的一 種方式。

      2、 client請求第一個block該傳輸到哪些DataNode服務器上;

      3、 NameNode根據配置文件中指定的備份數量及機架感知原理進行文件分配,返回可用的DataNode的地址如:

      A,B,C;

      4、 client請求3臺DataNode中的一臺A上傳數據(本質上是一個RPC調用,建立pipeline),A收到請求會繼續調用B,然后B調用C,將整個pipeline建立完成,后逐級返回client;pi

      5、 client開始往A上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以packet為單位(默認64K),A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答隊列等待應答。

      6、 數據被分割成一個個packet數據包在pipeline上依次傳輸,在pipeline反方向上,逐個發送ack(命令正確應答),最終由pipeline中第一個DataNode節點A將pipelineack發送給client;

      7、關閉寫入流。

      8、 當一個block傳輸完成之后,client再次請求NameNode上傳第二個block到服務器。

      文件讀取過程(重點)

      詳細步驟解析:

      1、客戶端通過調用FileSystem對象的open()來讀取希望打開的文件。

      2、 Client向NameNode發起RPC請求,來確定請求文件block所在的位置;

      3、 NameNode會視情況返回文件的部分或者全部block列表,對于每個block,NameNode 都會返回含有該 block副本的 DataNode 地址; 這些返回的 DN 地址,會按照集群拓撲結構得出 DataNode 與客戶端的距離,然后進行排序,排序兩個規則:網絡拓撲結構中距離 Client 近的排靠 前;心跳機制中超時匯報的 DN 狀態為 STALE,這樣的排靠后;

      4、 Client 選取排序靠前的 DataNode 來讀取 block,如果客戶端本身就是DataNode,那么將從本地直接獲取數據(短

      路讀取特性);

      5、 底層上本質是建立 Socket Stream(FSDataInputStream),重復的調用父類 DataInputStream 的 read 方法,直到這個塊上的數據讀取完畢;

      6、并行讀取,若失敗重新讀取

      7、當讀完列表的 block 后,若文件讀取還沒有結束,客戶端會繼續向NameNode 獲取下一批的 block 列表;

      8、返回后續block列表

      9、最終關閉讀流,并將讀取來所有的 block 會合并成一個完整的最終文件。

      說明: 1、讀取完一個 block 都會進行 checksum 驗證,如果讀取 DataNode 時出現錯誤,客戶端會 通知 NameNode,然后再從下一個擁有該 block 副本的DataNode 繼續讀。 2、read 方法是并行的讀取 block 信息,不是一塊一塊的讀取;NameNode 只是返回Client請 求包含塊的DataNode地址,并不是返回請求塊的數據;

      1

      2

      3

      4

      5

      HDFS數據的完整性

      1.數據在寫入之后進行校驗和的計算,DataNode周期性進行校驗和計算,將計算結果與第一次的結果進行對比。

      若相同表示無數據丟失,若不相同表示數據有丟失,丟失進行數據恢復。

      2.數據讀取之前對數據進行校驗,與第一次的結果進行對比。

      若相同表示數據沒有丟失,可以讀取。若不相同表示數據,有所丟失。需要到其他副本讀取。

      HDFS文件讀寫流程(2)

      本次的分享就到這里了,小伙伴們有什么疑惑或好的建議可以積極在評論區留言,小菌后續還會推出HDFS系列的其他內容,希望大家持續關注小菌~~

      往期內容回顧:

      《HDFS文件系統介紹(1)》

      《HDFS的shell常用命令大全》

      Hadoop

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:單片機實驗說明<一>數字口基本使用
      下一篇:HBase快速入門系列(5) | Hbase原理
      相關文章
      亚洲精品中文字幕乱码| 久久精品蜜芽亚洲国产AV| 99亚洲精品高清一二区| 亚洲综合色在线观看亚洲| 国产成人 亚洲欧洲| 亚洲精品无码久久久久久 | 亚洲成a人不卡在线观看| 亚洲av永久无码精品网站| 国产亚洲无线码一区二区 | 亚洲精品尤物yw在线影院 | 亚洲狠狠久久综合一区77777| 国产亚洲精品xxx| 亚洲韩国精品无码一区二区三区 | 亚洲精品tv久久久久| 亚洲国产婷婷综合在线精品| 国产AV无码专区亚洲AV麻豆丫| 亚洲aⅴ无码专区在线观看| 国产精品亚洲lv粉色| 免费在线观看亚洲| 亚洲精品偷拍视频免费观看| 亚洲精品国产综合久久一线| 亚洲人成无码网WWW| 国产中文在线亚洲精品官网| 久久久久久a亚洲欧洲aⅴ| 久久夜色精品国产嚕嚕亚洲av| 亚洲丝袜美腿视频| 亚洲综合久久久久久中文字幕| 亚洲人成网站18禁止久久影院 | 亚洲国产成人99精品激情在线 | 亚洲精品无码Av人在线观看国产| 亚洲国产精品VA在线观看麻豆| 久久亚洲国产伦理| 亚洲精品综合久久中文字幕| 亚洲熟妇色自偷自拍另类| 久久夜色精品国产噜噜亚洲a| 亚洲av成人中文无码专区| mm1313亚洲精品无码又大又粗| 亚洲无码日韩精品第一页| 亚洲精品~无码抽插| 亚洲午夜精品一区二区| 亚洲一区在线视频观看|