您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關HDFS中機架感知策略的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
通常來說大型的Hadoop集群是以機架的形式來組織的他們分布在不同的機架上面,同一個機架節點往往通過同一個網絡交換機連接,在網絡寬帶方面比跨機架通信有較大優勢。但是如果某一個文件數據庫同時存儲在同一個機架上面時,可能由于各種故障原因,導致文件不可用。HDFS采用機架感知策略來改進數據的可靠性、可用性和網絡寬度的利用率。
通過機架感知的過程,NameNode可以確定每一個 DataNode所屬的機架id。一個簡單但沒有優化的策略就是將副本存放在不同的機架上,這樣可以防止當整個機架失效時數據的丟失,并且允許讀數據的時候充分利用多個機架的帶寬。這種策略設置可以將副本均勻分布在集群中,有利于當組件失效的情況下的均勻負載。
也就是說,HDFS系統的機架感知策略的優勢是防止由于某個機架失效導致數據丟失,并且允許讀取數據時充分利用多個機架的帶寬。HDFS會盡量讓讀取任務去讀取距離客戶端最近的副本數據來減少整體帶寬消耗,從而實現降低整體的帶寬延時。
對于副本距離的計算公式,HDFS采用如下約定:
Distance(Rack 1/D1 Rack1/D1)=0 //同一臺服務器的距離為0
Distance(Rack 1/D1 Rack1/D3)=2 //通機架不同服務器的距離為2
Distance(Rack 1/D1 Rack2/D1)=4 //不同機架服務器距離為4
通常而言,一個Rack共享一個電源,一條網線,一個交換機,HDFS備份通常在同一個Rack上存儲一份,在另外一個Rack上存儲兩份(另外:HDFS以block為單位,備份也要以block為單位)
通過機架感知,處于工作狀態的HDFS總是設法確保數據塊的三個副本(或者更多)中至少有兩個在同一機架,至少有一個處在不同機架
而HDFS為每一個block存三份的話,那么client如何來寫入呢?
當client 寫文件創建新block之后,Name node會為這個block 創建一整個HDFS cluster 里獨有的ID,并且決定哪些Data node來存儲這個block的所有備份。被選擇到的Data node會組成一個隊列,client 向隊列的第一個Data node 寫入,第一個Data node除了把數據存在自己的硬盤上以外,還要把數據傳給隊列里的下一個Data node,直到最后一個Data node接到數據完畢
關于“HDFS中機架感知策略的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。