hadoop hdfs 資料讀寫

2021-10-22 23:50:19 字數 1394 閱讀 4654

向 namenode 請求上傳檔案

響應可以上傳檔案

向 namenode 請求, 上傳到哪幾台 datanode

namenode 返回,指定檔案上傳的 datanode 節點資料

通過獲取到的 namenode 節點資訊, 客戶端向乙個節點傳送通訊, 開通資料通訊管道

確認建立通道

建立 fsdataoutputstream

客戶端開始向 乙個datanode傳遞資料, 第乙個 datanode 將資料持久化到磁碟, 並通過記憶體, 向下乙個 datanode 傳遞副本, 直到傳遞最後乙個指定 datanode

確認資料傳輸完成, 向前乙個 namenode 或客戶端返回確認

客戶端將資料儲存到那麼datanode 節點的元資料資訊傳遞給 namenode 儲存

計算同節點距離 例如: 集群a-機架 1-node1, distance = 0

計算同機架距離 例如: 集群a-機架 1-node1—> 集群a-機架 1-node2, 機架相同, 各節點向上查詢 1 distance=2

計算同集群距離 例如: 集群a-機架 1-node1—>集群a-機架 2-node2, 集群相同, 各節點向上查詢 1 到機架, 再向上查詢 1 到集群 distance = 4

計算不同集群距離 例如: 集群a-機架 1-node1—>集群b-機架 2-node2, 各節點向上查詢 1 到機架, 再向上查詢 1到集群, 再向上查詢 1 distance=6

選擇儲存副本的節點, 例如有三個副本

副本一:根據 client 所處的客戶端, 找到相同節點, 儲存乙份副本

副本二:根據副本一所處節點, 找到相同機架任意節點, 儲存乙份副本

副本三:根據副本一所處節點, 找到不同機架任意節點, 儲存乙份副本

namenode 返回目標檔案的元資料

客戶端建立 fsdatainputstream 向獲取到的 datanode 節點發起blk1資料請求

datanode 返回 blk1 資料

如果整個檔案資料大於指定限制, 會有多個 block 塊, 向儲存了 blk2 的 namenode 發起資料請求

namenode 返回資料

客戶端將獲取到的整個資料儲存到指定位置

Hadoop HDFS 讀寫資料

1 初始化filesystem,然後客戶端 client 用filesystem的open 函式開啟檔案 2 filesystem用rpc呼叫元資料節點,得到檔案的資料塊資訊,對於每乙個資料塊,元資料節點返回儲存資料塊的資料節點的位址。3 filesystem返回fsdatainputstream給...

Hadoop HDFS 讀寫資料

1 初始化filesystem,然後客戶端 client 用filesystem的open 函式開啟檔案 2 filesystem用rpc呼叫元資料節點,得到檔案的資料塊資訊,對於每乙個資料塊,元資料節點返回儲存資料塊的資料節點的位址。3 filesystem返回fsdatainputstream給...

Hadoop HDFS讀寫流程

1 客戶端呼叫 distributedfilesystem 的 open 方法開啟檔案。2 distributedfilesystem 用 rpc 連線到 namenode 請求獲取檔案的資料塊的資訊 namenode 返回檔案的部分或者全部資料塊列表 對於每個資料塊,namenode 都會返回該資...