讀取檔案:
一:讀取方式一
寫入哪個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資...