Hadoop2.0架構

Hadoop2.0主要包括兩個module: 
HDFS – Hadoop File System。 
YARN – Yet Another Resource Negotiator 也稱爲MapReduce2.0,即MPv2。

其中HDFS是底層的存儲系統。不僅Hadoop的底層存儲可以使用HDFS,其他分佈式計算系統也可以使用HDFS作爲底層存儲系統。HDFS與在Hadoop1.0中有一些大的變化。而Hadoop2.0最重要的變化是新抽象出來的YARN,即獨立的分佈式資源管理與調度系統。YARN的出現主要爲了解決Hadoop1.0中NameNode的瓶頸問題。瞭解Hadoop1.0的同學知道,在1.0中NameNode既是HDFS的主控服務器,也是JobTracker之所在,因此負載很高且容易單點失敗。另外MapReduce作爲分佈式批處理計算範型,在2.0中沒有什麼改變。對Hadoop1.0不瞭解的同學建議先看看1.0的架構,這樣有助於對2.0的理解: 
http://blog.csdn.net/onlyqi/article/details/50478997 

下面我們分別就HDFS和YARN做進一步討論。

HDFS 
首先我們來看HDFS的架構: 
這裏寫圖片描述

大概描述是:HDFS仍然採用master/slave模式。主控節點仍然是NameNode,從節點仍然是多個DataNode。NameNode記錄數據集的元數據。由於每個大文件load到HDFS時,都會被分割成默認64MB的數據塊(Block),且這些數據塊被分散到多個DataNode中做並行處理,因此NameNode需要管理一個文件分成了哪些Block,這些Block又分散在哪些DataNode上。這些映射關係就是元數據。當DataNode上的Block發生變化時,需向NameNode報告更新元數據。客戶端操作數據時,需向NameNode查詢元數據,在查詢到數據所在的DataNode後,直接與DataNode交互,執行讀/寫操作。不同的數據塊Block會有多個副本(主要是爲了數據安全)。Rack是機架,一份數據的多個副本可能存在不同機架的服務器上。 
在Hadoop2.0中,HDFS有兩個大的改變:

  1. 1)HA方案 
    即High Availability。Hadoop1.0中的NameNode爲單節點,而second NameNode並非是NameNode的熱備機。因此在2.0中增加了stand-by NameNode(SNN),而主節點稱爲active NameNode(ANN)。ANN和SNN共享第三方存儲,是熱備方案,可自動failover。

  2. 2)NameNode聯盟 
    HA解決了單節點失敗的問題,但是NameNode的擴展性差的問題仍然沒有解決。由於NameNode在內存中管理元數據,因此由於內存限制,Hadoop1.0能管理的機器數最多爲4000~5000臺。同時在多租戶環境下(即一個集羣運行完全不相關的多個應用),單一的NameNode無法實現租戶間的有效隔離。NameNode聯盟使用多個NameNode來解決擴展性問題,可管理1w臺機器以上的集羣。 
    NameNode聯盟工作方式如下:將多個DataNode存儲的Block的元數據分成多個Block Pool(並非是一對一的關係),而一個NameNode可以管理多個Block Pool。由此每個NameNode管理一部分元數據,且相互獨立,不需要任何協調工作。 
    另外目前不能單獨安裝HDFS。也就是說如果你想用HDFS,需要直接安裝Hadoop。


YARN 
在Hadoop1.0中NameNode同時運行JobTracker,其作用是將用戶提交到Hadoop的job分解成map或reduce task,並在各個DataNode上併發運行這些task。每個DataNode上都運行一個TaskTracker進程,跟蹤報告task的運行情況並向JobTracker彙報。Hadoop2.0中這些功能被抽象成一個獨立的模塊,稱爲YARN。YARN本質上是一個分佈式資源管理與調度系統。它包括: 
唯一的資源管理器(Resource Manager) 
每個作業一個的應用管理器(Application Master) 
每個機器一個的節點管理器(Node Manager) 
這裏寫圖片描述

The ResourceManager has two main components: Scheduler and ApplicationsManager. 
The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.AM的功能和MPV1中的JobTracker類似。

The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.

The per-application ApplicationMaster has the responsibility of negotiating appropriate resource containers from the Scheduler, tracking their status and monitoring for progress. 
YARN是一個典型的二級調度器。RM管理全局資源與調度,爲一級調度器,將資源分配給每個Application Master。而Application Master爲二級調度器,負責在不同的Node間分配協調資源,在container運行子任務。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章