Hadoop Rack Aware 機架感知

2021-07-10 19:58:35 字數 968 閱讀 6497

副本的存放是hdfs可靠性和效能的關鍵。優化的副本存放策略是hdfs區分於其他大部分分布式檔案系統的重要特性。這種特性需要做大量的調優,並需要經驗的積累。hdfs採用一種稱為機架感知(rack-aware)的策略來改進資料的可靠性、可用性和網路頻寬的利用率。目前實現的副本存放策略只是在這個方向上的第一步。實現這個策略的短期目標是驗證它在生產環境下的有效性,觀察它的行為,為實現更先進的策略打下測試和研究的基礎。

大型hdfs例項一般執行在跨越多個機架的計算機組成的集群上,不同機架上的兩台機器之間的通訊需要經過交換機。在大多數情況下,同乙個機架內的兩台機器間的頻寬會比不同機架的兩台機器間的頻寬大。

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

在大多數情況下,副本係數是3,hdfs的存放策略是將乙個副本存放在本地機架的節點上,乙個副本放在同一機架的另乙個節點上,最後乙個副本放在不同機架的節點上。這種策略減少了機架間的資料傳輸,這就提高了寫操作的效率。機架的錯誤遠遠比節點的錯誤少,所以這個策略不會影響到資料的可靠性和可用性。於此同時,因為資料塊只放在兩個(不是三個)不同的機架上,所以此策略減少了讀取資料時需要的網路傳輸總頻寬。在這種策略下,副本並不是均勻分布在不同的機架上。三分之一的副本在乙個節點上,三分之二的副本在乙個機架上,其他副本均勻分布在剩下的機架中,這一策略在不損害資料可靠性和讀取效能的情況下改進了寫的效能。

當前,這裡介紹的預設副本存放策略正在開發的過程中。

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

摘自:

hdfs 機架感知

client 向 active nn 傳送寫請求時,nn為這些資料分配dn位址,hdfs檔案塊副本的放置對於系統整體的可靠性和效能有關鍵性影響。乙個簡單但非優化的副本放置策略是,把副本分別放在不同機架,甚至不同idc,這樣可以防止整個機架 甚至整個idc崩潰帶來的錯誤,但是這樣檔案寫必須在多個機架之...

機架感知 RackAwareness

分布式的集群通常包含非常多的機器,由於受到機架槽位和交換機網口的限制,通常大型的分布式集群都會跨好幾個機架,由多個機架上的機器共同組成乙個分布式集群。機架內的機器之間的網路速度通常都會高於跨機架機器之間的網路速度,並且機架之間機器的網路通訊通常受到上層交換機間網路頻寬的限制。在這種情況下,希望不同節...

Hadoop 機架感知

hadoop中副本在不同節點之間的複製需要消耗資源,為了充分發揮hadoop的效能,hadoop需要配置機架感知,這可以讓hadoop通過網路拓撲圖計算不同節點之間的距離,因此來減少資料傳輸消耗的資源。通過hadoop官網我們知道,不配置機架感知,所有的都預設為 default rack,可以通過命...