Hadoop2.0架構

Hadoop2.0架構 - 我的學習成長日記 - 博客頻道 - CSDN.NET
http://blog.csdn.net/onlyqi/article/details/50484527

打開Hadoop的官網,我們可以看到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有兩個大的改變:
HA方案 即High Availability。Hadoop1.0中的NameNode為單節點,而second NameNode并非是NameNode的熱備機。因此在2.0中增加了stand-by NameNode(SNN),而主節點稱為active NameNode(ANN)。ANN和SNN共享第三方存儲,是熱備方案,可自動failover。
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 firstContainer 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運行子任務。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容