HDFS檔案讀寫流程

2021-10-01 20:38:56 字數 1595 閱讀 9315

1.1 命令

hadoop fs -put ***.log /user

1.2 流程圖:

注意:檔案寫流程是 fsdataoutputstream ,不是 fsdatainputstream。

1.3 詳細過程

client 呼叫 filesystem.create(filepath) 方法,與 nn 進行【rpc】通訊,check 是否存在及是否有權建立:假如不 ok,就返回錯誤資訊:假如 ok,就建立乙個新檔案,不關聯任何 block 塊,返回乙個fsdataoutputstream 物件;

客戶端呼叫 fsdataoutputstream 物件 write() 方法,先將第乙個塊的第乙個副本寫到第乙個 dn,第乙個副本寫完就傳輸給第二個 dn,第二個副本寫完就傳輸給第三個 dn,第三個副本寫完就返回乙個 ack packet確認包,第二個 dn 就收到 ack 和自身 ok 就返回給第乙個 ack 確認包,第乙個收到 ack 和自身 ok 就返回給 fsdataoutputstream 物件,表示第乙個塊三個副本寫完。餘下的塊依次這樣寫;

當向檔案寫入資料完成後,client 呼叫 fsdataoutputstream.close() 方法,關閉輸出流;

再呼叫 filesystem.complete() 方法,告訴 nn 檔案寫入完成。

2.1 命令

hadoop fs -get /user/hive/warehouse/emp.txt

2.2 流程圖

2.3 詳細過程

client 呼叫 filesystem.open(filepath) 方法,與 nn 進行【rpc】通訊,返回該檔案的部分或者全部的 block 列表,也就是返回 fsdatainputstream 物件;

client 呼叫 fsdatainputstream 物件 read() 方法:

a. 與第乙個塊最近的 dn 進行 read,讀取完成後,會 check;假如 ok,就關閉與當前 dn 的通訊;假如失敗,會記錄失敗塊+dn 資訊,下次不會再讀取;那麼會去該塊的第二個 dn 位址讀取;

b. 然後去第二個塊的最近的 dn 上通訊讀取,check後,關閉通訊;

c. 假如block列表讀取完成後,檔案還未結束,filesystem 就會再次從 nn獲取該檔案的下一批次的 block 列表。(對於客戶端操作是透明無感知的,感覺此過程是連續的資料流);

client 呼叫 fsdatainputstream.close() 方法,關閉輸入流。

hadoop fs …

hadoop fs -put hadoop.log /test/

hadoop fs -chmod 777 /test/hadoop.log

hadoop fs -ls

hadoop fs -cat /test/hadoop.log

hadoop fs -rm

hadoop fs -rm -r

hadoop jar …jar pi 5 10

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...

HDFS檔案讀寫流程

詳細步驟解析 1 client發起檔案上傳請求,通過rpc與namenode建立通訊,namenode檢查目標檔案是否已存在,父目錄是否存在,返回是否可以上傳 2 client請求第乙個block該傳輸到哪些datanode伺服器上 3 namenode根據配置檔案中指定的備份數量及機架感知原理進行...

hdfs讀寫流程 HDFS 讀寫流程(詳解)

hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...