HDFS 寫檔案流程

2021-10-19 07:45:45 字數 910 閱讀 3536

hdfs寫檔案流程,需要先看懂下面2張圖

如圖:有2個機架伺服器群,通過交換機進行互動,其中同乙個群的不同機架都通過群內的伺服器進行互動。

例子中設定的3個副本放置在2個機架服務群上,其中副本1,2絕對不在同乙個機架群。這是為了防止有人把副本設定為2,然後a1,a2都分配到乙個機架服務群。

假設乙個資料的備份是3

客戶端會先找namenode獲取塊資訊,namenode告訴它(你去a1,a2,a3上面存把)

然後客戶端與a1塊建立socket連線。

把資料d1傳入a1塊,a1塊接受完資料d1後,a1和a2建立連線,把d1傳入a2,同時a1繼續接受資料d2。

這是一種類似流水線的傳輸,可以看成變種的並行操作。

namenode指定客戶端資料傳入a1,a2,a3,流式傳輸按照a1傳給a2,a2傳給a3的方式完成傳輸。

如果a2掛了,會出現什麼情況?

1.namenode分配了3塊去存,現在只有2塊可以用,還會分配新的塊去存嗎?

2.在傳輸的過程中掛了,是要全部重新傳嗎?

1.namenode雖然分配了3個塊給客戶端去存,但是實際這3個塊存資料是成功,它是不知道的,需要datanode接受完後再主動上報,namenode才清楚到底有幾個塊是成功的,如果發現少了乙個塊,它會繼續分配乙個新的去儲存。

2.client與datanode的通訊資料是通過ack package來實現的,每個package裡面有chunk(512byte基礎資料加上4byte的校驗位)

通過這個校驗位可以知道datanode已經接受的資料大小,偏移量

HDFS寫檔案流程

hdfs寫入檔案流程圖如下 1 客戶端呼叫distributed filesystem.create path 方法,與namenode進行rpc通訊,引數為路徑path。檢查傳入的路徑是否存在,以及當前使用者是否有寫入許可權。假如都滿足,就建立乙個新的檔案,但是此時並不關聯任何的block。並且返...

HDFS讀取流程和寫流程

讀 1.客戶端或者使用者通過呼叫 filesystem 物件的 open 方法開啟需要讀取的檔案,這對 hdfs 來說是常見乙個分布式檔案系統的乙個讀取例項。2.filesystem 通過遠端協議呼叫 namenode 確定檔案的前幾個 block 的位置。對於每乙個 block,namenode ...

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

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