Yarn是一款專門用來進行資源管理和調度的通用資源管理系統,我們不僅可以通過這款軟件來對各種不同的資源進行統一管理,而且還可以將數據資料進行共享。Yarn穩定版擁有強大的數據處理功能,能夠幫助用戶減少ResourceManager的資源消耗。
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。
大大減小了 JobTracker(也就是現在的 ResourceManager)的資源消耗,并且讓監測每一個 Job 子任務 (tasks) 狀態的程序分布式化了,更安全、更優美。
在新的 Yarn 中,ApplicationMaster 是一個可變更的部分,用戶可以對不同的編程模型寫自己的 AppMst,讓更多類型的編程模型能夠跑在 Hadoop 集群中,可以參考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
對于資源的表示以內存為單位 ( 在目前版本的 Yarn 中,沒有考慮 cpu 的占用 ),比之前以剩余 slot 數目更合理。
老的框架中,JobTracker 一個很大的負擔就是監控 job 下的 tasks 的運行狀況,現在,這個部分就扔給 ApplicationMaster 做了,而 ResourceManager 中有一個模塊叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是監測 ApplicationMaster 的運行狀況,如果出問題,會將其在其他機器上重啟。
Container 是 Yarn 為了將來作資源隔離而提出的一個框架。這一點應該借鑒了 Mesos 的工作,目前是一個框架,僅僅提供 java 虛擬機內存的隔離,hadoop 團隊的設計思路應該后續能支持更多的資源調度和控制 , 既然資源表示成內存量,那就沒有了之前的 map slot/reduce slot 分開造成集群資源閑置的尷尬情況。
集中式架構
集中式調度器(Monolithic Scheduler)的特點是,資源的調度和應用程序的管理功能全部放到一個進程中完成,開源界典型的代表是MRv1 JobTracker的實現。這樣設計的缺點很明顯,擴展性差:首先,集群規模受限;其次,新的調度策略難以融入到現有代碼中,比如之前僅支持MapReduce作業,現在要支持流式作業,而將流式作業的調度策略嵌入到中央調度其中是一項很難的工作。
雙層調度架構
為了克服集中式調度器的不足,雙層調度器是一種很容易被想到的解決之道,它可看作是一種分而治之的機制或者是策略下放機制:雙層調度器仍保留一個經簡化的集中式資源調度器,但具體任務相關的調度策略則下放到各個應用程序調度器完成。這種調度器的典型代表是Mesos。Mesos調度器由兩部分組成,分別是資源調度器和框架(應用程序)調度器,其中,資源調度器負責將集群中的資源分配給各個框架(應用程序),而框架(應用程序)調度器負責將資源進一步分配給內部的各個任務,用戶很容易將一種框架或者系統接入Mesos.
雙層調度器的特點是:各個框架調度器并不知道整個集群資源使用情況,只是被動地接受資源;資源調度器僅將可用的資源推送給各個框架,而由框架自己選擇是使用還是拒絕這些資源;一旦框架接受到新資源,再進一步將資源分配給其內部的任務,進而實現雙層調度。然而這種調度器也是有缺點,主要表現在以下兩個方面:1.各個框架無法知道整個集群的實時資源使用情況;采用悲觀鎖,并發粒度小。
首先需要修改mapred-site.xml文件,從網上下載的hadoop的配置文件中,往往是包含mapred-site.xml.template的,我們將這個文件改名即可。
修改mapred-site.xml文件的內容,加入如下的內容即可,
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改yarn-site.xml的配置文件,加入如下的內容即可。
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
啟動yarn即可,在hadoop的安裝根目錄下面執行如下命令:./sbin/start-yarn.sh即可,執行無誤會提示:starting yarn daemons。
如何檢驗yarn有沒有啟動成功呢?通過查看進程的方式,我們輸入jps,如果發現多了 NodeManager 和 ResourceManager 兩個后臺進程,證明啟動成功。
yarn有自己的管理界面,我們只需要輸入地址:http://localhost:8088/cluster,就能以界面的方式查看任務運行情況了。