HDFS 讀寫資料流程

2022-06-18 20:18:11 字數 1340 閱讀 7950

1.網路節點距離(機架感知)

下圖中:

client 到 dn1 的距離為 4

client 到 nn 的距離為 3

dn1 到 dn2 的距離為 2

2.block 的副本放置策略

namenode 通過 hadoop rack awareness 確定每個 datanode 所屬的機架 id

簡單但非最優的策略

將副本放在單獨的機架上

這可以防止在整個機架出現故障時丟失資料,並允許在讀取資料時使用來自多個機架的頻寬。

此策略在群集中均勻分布副本,平衡元件故障的負載。

但是此策略會增加寫入消耗,因為寫入時會將塊傳輸到多個機架。

常見情況策略(hdfs 採取的策略)

當複製因子為 3 時,hdfs 的放置策略是:

若客戶端位於 datanode 上,則將乙個副本放在本地計算機上,否則放在隨機 datanode 上

在另乙個(遠端)機架上的節點上放置另乙個副本,最後乙個在同乙個遠端機架中的另乙個節點上。

機架故障的可能性遠小於節點故障的可能性。

此策略可以減少機架間寫入流量,從而提高寫入效能,而不會影響資料可靠性和可用性(讀取效能)。

這樣減少了讀取資料時使用的聚合網路頻寬,因為塊只放在兩個唯一的機架,而不是三個。

如果複製因子大於 3,則隨機確定第 4 個及後續副本的放置,同時保持每個機架的副本數量低於上限(基本上是(副本 - 1)/機架+ 2)。

由於 namenode 不允許 datanode 具有同一塊的多個副本,因此建立的最大副本數是此時datanode的總數。

原文(replica placement: the first baby steps 章節): 

為了最大限度地減少全域性頻寬消耗和讀取延遲,hdfs 會選擇最接客戶端的節點中的副本來響應讀取請求。

如果客戶端與 datanode 節點在同一機架上,且存在所需的副本,則該副本會首讀用來響應取請求。

如果 hdfs 群集跨越多個資料中心,則駐留在本地資料中心的副本優先於任何遠端副本。

原文(replica selection 章節):

HDFS讀寫資料流程

步驟 1 客戶端通過 distributed filesystem 模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。2 namenode返回是否可以上傳。3 客戶端請求第乙個 block 上傳到哪幾個 datanode 伺服器上。4 namenode返回3...

HDFS讀寫資料流程

hdfs寫資料流程 client向namenode申請寫資料 namenode檢查許可權 是否存在該檔案等,返回是否可以上傳 如果namenode返回可以上傳,client申請上傳第乙個block,請求返回datanode namenode返回三個datanode位址 client請求向dn1,dn...

HDFS 讀 寫資料流程

客戶端通過 distributed filesystem 模組向 namenode 請求上傳檔案,namenode 檢查目標檔案是否已存在,父目錄是否存在 namenode 返回是否可以上傳 客戶端請求namenode,獲取第乙個 block 上傳到哪幾個 datanode 伺服器上 namenod...