HDFS資料副本存放策略

2021-08-13 08:17:20 字數 1008 閱讀 5932

1.副本放置策略

第一副本:放置在上傳檔案的datanode上;如果是集群外提交,則隨機挑選一台磁碟不太慢、cpu不太忙的節點上;

第二副本:放置在於第乙個副本不同的機架的節點上;

第三副本:與第二個副本相同機架的不同節點上;

hdfs採用一種稱為機架感知(rack-aware)的策略來改進資料的可靠性、可用性和網路頻寬的利用率。目前實現的副本存放策略只是在這個方向上的第一步。實現這個策略的短期目標是驗證它在生產環境下的有效性,觀察它的行為,為實現更先進的策略打下測試和研究的基礎。

大型hdfs集群系統往往執行在跨越多個機架的資料中心,不同機架上的兩台機器之間的通訊需要經過交換機。在大多數情況下,同乙個機架內的兩台機器間的頻寬會比不同機架的兩台機器間的頻寬大。

通過乙個機架感知的過程,namenode可以確定每個datanode所屬的機架id。乙個簡單但沒有優化的策略就是將副本存放在不同的機架上。這樣可以有效防止當整個機架失效時資料的丟失,並且允許讀資料的時候充分利用多個機架的頻寬。這種策略設定可以將副本均勻分布在集群中,有利於元件失效情況下的負載均衡。但是,因為這種策略的乙個寫操作需要傳輸資料塊到多個機架,因此增加了寫的代價。

hdfs預設的副本係數是3,這適用於大多數情況。副本存放策略是將第乙個副本存放在本地機架的節點上,將第二個副本放在同一機架的另乙個節點上,將第三個副本放在不同機架的節點上。這種策略減少了機架間的資料傳輸,這就提高了寫操作的效率。機架的錯誤遠遠比節點的錯誤少,所以這個策略不會影響資料的可靠性和可用性。

與此同時,因為資料塊只放在兩個(不是3個)不同的機架上,所以此策略減少了讀取資料時需要的網路傳輸總頻寬。在這種策略下,副本並不是均勻分布在不同的機架上。三分之一的副本在乙個節點上,三分之一的副本在同乙個機架的其他節點上,其他副本均勻分布在剩下的機架中,這一策略在不損害資料可靠性和讀取效能的情況下改進了寫的效能。

為了降低整體的頻寬消耗和讀取延時,hdfs會盡量讓讀取程式讀取離它最近的副本。如果讀取程式的同乙個機架上有乙個副本,那麼就讀取該副本;如果乙個hdfs集群跨越多個資料中心,那麼客戶端也將首先讀取本地資料中心的副本。

HDFS副本存放策略

第乙個block副本放在和client所在的node裡 如果是集群外提交,則隨機挑選一台磁碟不太慢 cpu不太忙的節點上 第二個副本放置在與第乙個節點不同的機架中的node中 隨機選擇 第三個副本和第二個在同乙個機架,隨機放在不同的node中。如果還有更多的副本就隨機放在集群的node裡。流水線複製...

HDFS副本存放策略

資料分塊儲存和副本的存放,是保證可靠性和高效能的關鍵 將每個檔案的資料進行分塊儲存,每乙個資料塊又儲存有多個副本。這些資料塊副本分布在不同的機器節點上 設定備份數 方法一 配置檔案hdfs site.xml dfs.replication 3方法二 通過命令修改備份數 bin hadoop fs s...

副本存放策略

副本的存放策略 1 資料的安全 2 資料塊的負載均衡 這種方案不是一種最完美的方案 兩個問題 1 概念 給乙個資料塊的多個副本選取合適的儲存節點,來保障資料塊的安全 是說將乙個資料塊的三個副本放在三個不同的節點,而不是將乙個檔案的多個不同的資料塊放在不同的節點。2 具體實現 不同機架 不同機房 不同...