1.網路節點距離(機架感知)
下圖中:client 到 dn1 的距離為 4
client 到 nn 的距離為 3
dn1 到 dn2 的距離為 2
2.block 的副本放置策略
namenode 通過 hadoop rack awareness 確定每個 datanode 所屬的機架 id
簡單但非最優的策略
將副本放在單獨的機架上常見情況策略(hdfs 採取的策略)這可以防止在整個機架出現故障時丟失資料,並允許在讀取資料時使用來自多個機架的頻寬。
此策略在群集中均勻分布副本,平衡元件故障的負載。
但是此策略會增加寫入消耗,因為寫入時會將塊傳輸到多個機架。
當複製因子為 3 時,hdfs 的放置策略是:如果複製因子大於 3,則隨機確定第 4 個及後續副本的放置,同時保持每個機架的副本數量低於上限(基本上是(副本 - 1)/機架+ 2)。若客戶端位於 datanode 上,則將乙個副本放在本地計算機上,否則放在隨機 datanode 上
在另乙個(遠端)機架上的節點上放置另乙個副本,最後乙個在同乙個遠端機架中的另乙個節點上。
機架故障的可能性遠小於節點故障的可能性。
此策略可以減少機架間寫入流量,從而提高寫入效能,而不會影響資料可靠性和可用性(讀取效能)。
這樣減少了讀取資料時使用的聚合網路頻寬,因為塊只放在兩個唯一的機架,而不是三個。
由於 namenode 不允許 datanode 具有同一塊的多個副本,因此建立的最大副本數是此時datanode的總數。
原文(replica placement: the first baby steps 章節):
為了最大限度地減少全域性頻寬消耗和讀取延遲,hdfs 會選擇最接客戶端的節點中的副本來響應讀取請求。原文(replica selection 章節):如果客戶端與 datanode 節點在同一機架上,且存在所需的副本,則該副本會首讀用來響應取請求。
如果 hdfs 群集跨越多個資料中心,則駐留在本地資料中心的副本優先於任何遠端副本。
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...