HDFS檔案讀取和寫入

2021-08-02 21:01:40 字數 1216 閱讀 6951



讀取檔案:

一:讀取方式一

寫入哪個datanode是不確定的,主要尋找讀取速度較快的datanode;

怎麼找到這種datanode,從以下幾個方面:是否有本機位置,本機架位置,本機房位置;

依次重試讀取檔案,直到讀取檔案成功;

二:讀取方式二:backupread

每次讀取時,client會並行試著讀取兩個或三個datanode,接受讀取成功資訊後,會通知其他魏都區的datanode結束讀取。

寫入資料:

一:鏈式寫入:

連式出現錯誤:假如datanode2出現網路問題。

解決方法:(1)直接跳過datanode2的寫入,也就是寫入兩台機器,比預設數量少一,帶來了資料安全的問題;

(2)seal and new方式:datanode1向2寫入時,發現故障,會通過client向namenode回執錯誤資訊;然後從新分配寫入的datanode,假設選中了datanode4,然後向1,3,4練市寫入資料。

二:主從模式:

客戶端或者系統出現故障時,可能會引起資料的丟失。這就需要一直模式保障資料的完整性。

方法一例如:

path p = new path("p");

outputstream out = fs.create(p);

out.write("content".getbytes("utf-8"));

out.flush();

out.sync();

out.flush():當寫入的資料超過乙個塊後,對新的資料塊就可以進行讀操作。但正在寫入的資料塊對外不可見,也就是不能進行讀操作。

out.sync():對於已經寫入的資料可讀。無論資料塊有沒有被寫滿。

但這兩個方法會對資料的吞吐量有所影響,所以用時要在魯棒性和吞吐量做出權衡。

具體的讀寫步驟詳細說明可以參考hadoop權威指南。

HDFS檔案的寫入和讀取過程

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

HDFS的讀取和寫入

1 客戶端將待寫入的檔案資訊上傳給namenode 2 namenode檢測要上傳的檔案 3 將是否可上傳的資訊返回給客戶端 4 client將待上傳的檔案進行切塊,然後上傳blk1 5 namenode根據集群中現存的快資訊和機架感知,選出可上傳的主機 假設時datanode1和datanode2...

hdfs檔案寫入與讀取過程

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