hadoop2.0的新特性
阿新 • • 發佈:2018-11-27
Hadoop2.0
產生背景
1、Hadoop 1.0中HDFS和MapReduce在高可用、擴充套件性等方面存在問題 2、HDFS存在的問題 NameNode單點故障,難以應用於線上場景 NameNode壓力過大,且記憶體受限,影響系統擴充套件性 3、MapReduce存在的問題 JobTracker訪問壓力大,影響系統擴充套件性 難以支援除MapReduce之外的計算框架,比如Spark、Storm等
hadoop1.x和hadoop2.x的比較
Hadoop 2.x由HDFS、MapReduce和YARN三個分支構成; HDFS:NN Federation(聯邦)、HA; 2.X:只支援2個節點HA,3.0實現了一主多從 MapReduce:執行在YARN上的MR; 離線計算,基於磁碟I/O計算 YARN:資源管理系統
HDFS2.x
解決HDFS 1.0中單點故障和記憶體受限問題。 解決單點故障 HDFS HA:通過主備NameNode解決 如果主NameNode發生故障,則切換到備NameNode上 解決記憶體受限問題 HDFS Federation(聯邦) 水平擴充套件,支援多個NameNode; (1)所有NameNode共享所有DataNode儲存資源 (2)每個NameNode分管一部分目錄; 2.x僅是架構上發生了變化,使用方式不變 對HDFS使用者透明 HDFS 1.x中的命令和API仍可以使用
詳細展開
HDFS2.0如何解決主備問題
主備伺服器,主伺服器主要是和客戶端通訊,備伺服器同步主伺服器資訊,將edits log存到journalNodes叢集上,備伺服器和journalnodes伺服器的edits log同步 HA為了擴充套件NameNode需要處理元資料資訊 元資料資訊可以分為動態元資料和靜態元資料 動態元資料需要通過DataNode分別和兩臺NameNode傳資訊 靜態元資料可以通過NFS建立共享伺服器,將edits log放進去,兩臺NameNode都可以和共享伺服器通訊,達到同步資料的結果 最好用journalnode叢集放置edits log,讓兩臺NameNode可以和jn進行通訊,更新記憶體資訊 NameNode自動切換主備 zookeeper 維護樹 事務處理 控制 控制NameNode心跳
HDFS2.0 HA
主備NameNode 解決單點故障(屬性,位置) 主NameNode對外提供服務,備NameNode同步主NameNode元資料,以待切換 所有DataNode同時向兩個NameNode彙報資料塊資訊(位置) JNN:叢集(屬性) standby:備,完成了edits.log檔案的合併產生新的image,推送回ANN 兩種切換選擇 手動切換:通過命令實現主備之間的切換,可以用HDFS升級等場合 自動切換:基於Zookeeper實現 基於Zookeeper自動切換方案 ZooKeeper Failover Controller:監控NameNode健康狀態, 並向Zookeeper註冊NameNode NameNode掛掉後,ZKFC為NameNode競爭鎖,獲得ZKFC 鎖的NameNode變為active
HDFS 2.x Federation(聯邦機制)
通過多個namenode/namespace把元資料的儲存和管理分散到多個節點中,使到namenode/namespace可以通過增加機器來進行水平擴充套件。 能把單個namenode的負載分散到多個節點中,在HDFS資料規模較大的時候不會也降低HDFS的效能。可以通過多個namespace來隔離不同型別的應用,把不同型別應用的HDFS元資料的儲存和管理分派到不同的namenode中。