首先介紹一下什麼是yarn資源管理器:
YARN(Yet Another Resource Negotiator)是一個通用的資源管理平臺,可為各類計算框架提供資源的管理和排程。 其核心出發點是為了分離資源管理與作業排程/監控,實現分離的做法是擁有一個全域性的資源管理器(ResourceManager,RM),以及每個應用程式對應一個的應用管理器(ApplicationMaster,AM),應用程式由一個作業(Job)或者Job的有向無環圖(DAG)組成。
YARN可以將多種計算框架(如離線處理MapReduce、線上處理的Storm、迭代式計算框架Spark、流式處理框架S4等) 部署到一個公共叢集中,共享叢集的資源。
簡而言之,可以提供如下功能:
- 資源統一的管理和排程
叢集中所有節點的資源(記憶體、CPU、磁碟、網路等)抽象為Container。計算框架需要資源進行運算任務時需要向YARN申請Container, YARN按照特定的策略對資源進行排程進行Container的分配
- 資源隔離
YARN使用了輕量級資源隔離機制Cgroups進行資源隔離以避免相互干擾,一旦Container使用的資源量超過事先定義的上限值,就將其殺死。
貼一張隨處可見的yarn的架構圖
yarn通過ResourceManager和NodeManager會直接管理和排程客戶端的請求與分發。下面直接帶大家配置hadoop的yarn資源管理
第一步,配置master主節點
進入到hadoop的目錄下的/etc/hadoop
裡,編輯yarn-site.xml
檔案
vi yarn-site.xml
複製程式碼
預設裡面都是空的,在configuration
標籤內配置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> //resourcemanager的主機
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
複製程式碼
然後編輯mapred-site.xml
檔案
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
複製程式碼
配置mapreduce作業的資源管理框架為yarn
第二步 配置slave從節點
進入到slave從節點的hadoop的目錄下的/etc/hadoop
裡,編輯yarn-site.xml
檔案
vi yarn-site.xml
複製程式碼
預設裡面都是空的,在configuration
標籤內配置
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> master:8031</value>
</property>
複製程式碼
在從節點裡配置好master節點的資源管理地址,保證slave從節點可以找到master主節點裡的resourcemanager資源管理器
同時為了保證MapReduce作業能夠正常執行還需要配置
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
複製程式碼
然後就可以啟動yarn資源管理器了。仍然可以通過叢集的方式啟動,在master節點中執行以下命令
start-yarn.sh 啟動yarn叢集
stop-yarn.sh 停止yarn叢集
複製程式碼
可以看到
yarn叢集已經成功啟動了。一般我們會先啟動hadoop叢集start-dfs.sh
,再啟動yarn叢集start-yarn.sh
.也可以通過start-all.sh
命令可以一鍵全部啟動。