Yarn搭建
- Yarn资源调度流程
- 集群规划
- Yarn搭建步骤
- 查看Yarn的WebUI监控页面
- 提交MapReduce应用程序到Yarn上运行并在监控页面查看
Yarn资源调度流程
想了解Yarn资源调度流程
集群规划
角色 | node01 | node02 | node03 | node04 | client |
ResourceManager | √(主) | √(备) | |||
NodeManager | √ | √ | √ | ||
Client | √ |
Yarn搭建步骤
由于在Hadoop2.x版本中自带Yarn组件, 因此Yarn的搭建是在Hadoop的安装包中进行.
- 首先进入Hadoop的配置文件目录
cd /opt/software/hadoop/hadoop-2.6.5/etc/hadoop/
- 修改mapred-site.xml.template
先将文件改名, 去掉后缀
mv mapred-site.xml.template mapred-site.xml
在 configuration 标签对中加入下述内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 修改yarn-site.xml
在 configuration 标签对中加入下述内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- MapReduce的shuffle借助于yarn来实现 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 启动ResourceManager的高可用,即主备ResourceManager-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<!-- 自定义Yarn集群的id号 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- ResourceManager在哪些节点上启动,这里是节点的别名,别名的配置见下 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node01</value>
</property>
<!-- 启动Resourcemanager的节点node01,别名rm1 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node02</value>
</property>
<!-- 启动Resourcemanager的节点node02,别名rm2 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node02:2181,node03:2181,node04:2181</value>
</property>
<!-- 由于高可用基于Zookeeper,因此需要将Zookeeper的信息配置进来 -->
- 发送修改的配置文件
修改完成之后, 需要将mapred-site.xml 和 yarn-site.xml 两个文件发送到其他三个节点和client上:
scp mapred-site.xml node02:`pwd`&
scp mapred-site.xml node03:`pwd`&
scp mapred-site.xml node04:`pwd`&
scp mapred-site.xml client:`pwd`&
scp yarn-site.xml node02:`pwd`&
scp yarn-site.xml node03:`pwd`
scp yarn-site.xml node04:`pwd`
scp yarn-site.xml client:`pwd`
- 启动Yarn主节点
start-yarn.sh
- 启动Yarn备用节点
yarn-daemon.sh start resourcemanager
- 查看进程
jps
查看Yarn的WebUI监控页面
启动Yarn集群之后, 在本地机打开浏览器, 在地址栏输入active 状态的ResourceManager节点的ip地址+端口, 例如192.168.75.133:8088(8088是默认端口), 也可在本地机中修改host文件, 配置域名node01, 就可以使用node01:8088来访问webUI的页面. 如图:
点击左侧圈中的Nodes, 可以查看从节点NodeManager的信息:
如果能够成功打开上述页面, 且Active Nodes 个数与slaves文件中配置的节点个数一致, 则表明Yarn集群搭建成功.
我们搭建的是高可用的yarn集群, 在node02上还有一个备用的ResourceManager节点, 这时我们访问node02的ResourceManager的WebUI, 页面会提示以下内容:
意思就是说这给RM是standby状态的, 随后便会自动跳转到Active状态的ResourceManager的WebUI上.
提交MapReduce应用程序到Yarn上运行并在监控页面查看
在client端提交MapReduce自带的wordcount程序:
hadoop jar /opt/software/hadoop/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /bigdata/hdfs/abc.txt /bigdata/mapreduce/wordcount1
格式解读: hadoop jar +jar包路径 +wordcount(代表执行wc应用) +hdfs输入文件路径 +hdfs输出路径
提交完成之后, 会陆续打印如下类似内容:
在map 0% reduce 0%之后多次提交jps命令后, 会发现集群上会随机在某个或多个节点上分别启动MRAppMaster和YarnChild两个进程, 代表Yarn运行流程中的ApplicationMaster和Yarn-Child角色.
提交任务之后, 可以在之前所说的Yarn的监控页面中查看提交应用的相关信息以及执行进度.
应用执行完成之后, 在提交命令所指的输出路径下会有多个文件, 执行结果存放在part-r-*****相关的所有文件中.
使用HDFS命令查看hdfs dfs -cat /bigdata/mapreduce/wordcount1/part-r-00000
结果如下: