hadoop 集群中數據塊的副本存放策略


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

大型HDFS集群系統往往運行在跨越多個機架的數據中心,不同機架上的兩台機器之間的通信需要經過交換機。在大多數情況下,同一個機架內的兩台機器間的帶寬會比不同機架的兩台機器間的帶寬大。

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

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

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

為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讓讀取程序讀取離它最近的副本。如果讀取程序的同一個機架上有一個副本,那么就讀取該副本;如果一個HDFS集群跨越多個數據中心,那么客戶端也將首先讀取本地數據中心的副本。來源:CUUG官網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM