1.client發起檔案上傳請求 通過rpc和namenode建立連線,namenode檢查目標檔案是否存在,檢查父目錄是否存在,檢查使用者是否有許可權,返回是否可以上傳
2.client請求第乙個block該傳輸到那些datanode伺服器上
3.namenode根據配置檔案中指定的備份數量及機架感知原理進行檔案分配,返回可用的datanode位址如:a,b,c
注:hadoop在設計時考慮到資料的安全與高效,資料檔案預設在hdf上存放三份,儲存策略為本地乙份,同機架內其他某節點上乙份,不同機架的某一節點上乙份.
4.client請求3臺datanode中的一台a上傳 資料(本質上是乙個rpc呼叫,建立pipeline),a收到請求會繼續呼叫b,然後呼叫c,將整個pipeline建立完成,後逐級返回client
5.client開始往a上傳第乙個block(先從磁碟讀取資料放到乙個本地快取),以packet為單位(預設64k),a收到乙個packet就會傳給b,b傳給c;a每傳乙個packet會放入乙個應答佇列等待應答
6.資料被分割成乙個個packet資料報在pipeline上一次傳輸,在pipeline反方向上,逐個傳送ack(命令正確應答),最終由pipeline中第乙個datanode節點a將pipelineack傳送給client
7.當乙個block傳輸完成之後,client再次請求namenode上傳第二個block到伺服器
1.client向namenode發起rpc請求,來確定請求檔案block所在的位置
2.namenode會視情況返回檔案的部分或者全部block列表,對於每個block,namenode都會返回含有該block副本的datanode位址,這些返回的datanode位址,會按照集群拓撲結構得出datanode與客戶端的距離,然後進行排序,排序兩個規則:網路拓撲結構中距離client近的排靠前,心跳機制中超時匯報的datanode狀態為stale,這樣的排靠後
3.client選取排序靠前的datanode來讀取block,如果客戶端本身就是datanode,name將從本地直接獲取資料(短路讀取特性)
4.底層上本質是建立socket stream(fsdatainputstream),重複的呼叫父類datainputstream的read方法,直到這個塊上的資料讀取完畢
5.當讀完列表的block後,若檔案讀取還沒有結束,客戶端會繼續向namenode獲取下一批的block列表
6.讀取完乙個block都會進行checksum驗證,如果讀取datanode時出現錯誤,客戶端會通知namenode,然後再從下乙個擁有該block副本的datanode繼續讀
7.read方法是並行讀取block資訊,不是一塊一塊的讀,namenode只是返回client請求包含塊的datanode位址,並不是返回請求塊的資料
8.最終讀取來所有的block會合併成乙個完整的最終檔案
hdfs讀寫流程 HDFS 讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...
hdfs讀寫流程 HDFS 檔案讀寫流程
開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...
HDFS讀寫流程
hdfs讀寫流程 一 hdfs讀檔案流程 1 client通過filesystem.open filepath 方法,去與namenode進行rpc通訊,返回該檔案的部分或全部的block列表 也包含該列表各 block 的分布在 datanode 位址的列表 也就是返回fsdatainputstr...