HDFS 檔案讀取過程

2021-09-28 18:50:38 字數 649 閱讀 8251

client向namenode發起rpc請求,來確定請求檔案block所在的位置;

namenode會視情況返回檔案的部分或者全部block的主機列表,namenode會對列表進行排序,排序兩個規則:網路拓撲結構中距離 client 近的排靠前;心跳機制中超時匯報的 dn 狀態為 stale,這樣的排靠後;

client 選取排序靠前的 datanode 來讀取 block,如果客戶端本身就是datanode,那麼將從 本地直接獲取資料(短路讀取特性);

底層上本質是建立 socket stream(fsdatainputstream),重複的呼叫父類 datainputstream 的 read 方法,直到這個塊上的資料讀取完畢;

當讀完列表的 block 後,若檔案讀取還沒有結束,客戶端會繼續向namenode 獲取下一 批的 block 列表;

讀取完乙個 block 都會進行 checksum 驗證,如果讀取 datanode 時出現錯誤,客戶端會 通知 namenode,然後再從下乙個擁有該 block 副本的datanode 繼續讀。

read 方法是並行的讀取 block 資訊,不是一塊一塊的讀取;namenode 只是返回client請 求包含塊的datanode位址,並不是返回請求塊的資料;

最終讀取來所有的 block 會合併成乙個完整的最終檔案。

hdfs檔案寫入與讀取過程

client向namenode請求上傳a.txt namenode檢測client的上傳許可權 namenode回答client是否可以上傳 client將檔案按照block size大小將檔案分為幾份,並向namenode請求上傳乙個block namenode根據datanode上的block資...

HDFS 讀取過程分析

客戶端或者使用者通過呼叫 filesystem 物件的 open 方法開啟需要讀取的檔案,這對 hdfs 來說是常見乙個分布式檔案系統的乙個讀取例項。filesystem 通過遠端協議呼叫 namenode 確定檔案的前幾個 block 的位置。對於每乙個 block,namenode 返回一含有那...

HDFS檔案的寫入和讀取過程

hdfs檔案寫入 client 發起檔案上傳請求,通過 rpc 與 namenode 建立通訊namenode 檢查目標檔案是否已存在,父目錄是否存在,返回是否可以上傳client請求上傳第乙個 block namenode 根據配置檔案中指定的備份數量及機架感知原理進行檔案分配,返回可用的 dat...