HDFS分布式文件系統學習(3)
1.1.3 HDFS聯邦
HDFS的聯邦,可以簡單理解為多個HDFS集群聚合到一起,更準確的理解是有多個NameNode節點的HDFS集群。當集群大到一定程度之后,NameNode進程使用的內存可能會達到上百G,NameNode成為了性能的瓶頸。與此同時,單Active NameNode中維護的元數據都在同一個命名空間中,集群中所的應用程序無法很好地隔離。一個程序操作元數據可能會影響其他運行的程序。
在HDFS聯邦中,有多個聯合但卻相互獨立的NameNode,使得HDFS的命名空間可以進行水平拓展。每個NameNode維護著屬于自己的命名空間卷,包含命名空間的元數據和一個數據塊池(block pool)組成,block pool管理著該命名空間下文件的所有數據塊。block pool允許一個命名空間在不通知其他NameNode的情況下為一個新的數據塊創建一個BlockID,這樣在DataNode向集群中所有NameNode匯報數據塊的情況下,每一個命名空間只管理屬于自己的一組數據塊信息。也因此一個NameNode的服務中斷并不會影響其他NameNode中數據的可用性。每個NameNode只負責整個HDFS集群中部分目錄。各NameNode間元數據不共享,每個NameNode都有對應的standby。
圖 2-3 HDFS聯邦機制
HDFS的聯邦機制主要應用于超大規模文件存儲。如互聯網公司存儲用戶行為數據、電信歷史數據、語音數據等超大規模數據存儲。
1.1.4 數據副本機制
HDFS會把副本放在不同的機架上。如圖2-4所示,第一個副本B1在本地機器,第二個副本B2在遠端機架,第三個副本B3檢測兩個副本是否在同一機架,如果是則選擇其他機架,否則選擇和第一個副本B1相同機架的不同節點,第四個及以上,隨機選擇副本存放位置。
圖2-4? 數據副本存儲示意圖
HDFS系統的機架感知策略的優勢是防止由于某個機架失效導致數據丟失,并允許讀取數據時充分利用多個機架的帶寬。HDFS會盡量讓讀取任務去讀取離客戶端最近的副本數據以減少整體帶寬消耗,從而降低整體的帶寬延時。
對于副本距離的計算公式,HDFS采用如下約定:
(1)Distance(Rack 1/D1 Rack1/D1)= 0? #同一臺服務器的距離為0
(2)Distance(Rack 1/D1 Rack1/D3)= 2? #同機架不同服務器距離為2
(3)Distance(Rack 1/D1 Rack2/D1)= 4? #不同機架服務器距離為4
其中,Rack1、Rack2表示機柜標識號,D1、D2、D3表示所在機柜中的DataNode節點主機的編號。即同一主機的兩個數據塊的距離為0;同一機架不同主機上的兩個數據塊的距離為2;不同機架主機上的數據塊距離為4。
通過機架感知,處于工作狀態的HDFS總是設法確保數據塊的3個副本(或更多副本)中至少有2個在同一機架,至少有1個處在不同機架(至少處在兩個機架上)。
Hadoop 分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。