1、YARN架构
1个RN(ResourceManager)和多个NM(NodeManager)
ResourceManager职责: 一个集群active状态的RM只有一个,负责整个集群资源管理和调度
1) 处理客户端的请求(启动/杀死)
2) 启动/监控ApplicationMaster(一个作业对应一个AM)
3)、监控NM
4) 系统的资源分配和调度
NodeManager职责: 整个集群有N个,负责单个节点的资源管理和使用以及task的运行情况
1) 定期向RM汇报本节点的资源使用请求和各个Container的运行状态
2) 接收并处理RM的container 启停的各种命令
3) 单个节点的资源管理和任务管理
ApplicationMaster职责: 每个应用/作业对应一个,负责应用程序的管理
1) 数据切分
2) 为应用程序向RM申请资源(Container),并分配给内部任务。
3) 与NM通信以启停task, task是运行在container中的
4) task的监控和容错
Container职责
对任务运行情况的描述: cpu、memory、环境参数
2、YARN执行流程
1) 用户向YARN提交作业
2) RM为该作业分配第一个container(AM)
3) RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM
4) AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况
5) AM采用轮询的方式通过RPC协议向RM申请和领取资源。
6) AM申请到资源以后,便和相应的NM通信,要求NM启动任务。
7) NM启动我们作业对应的task
3、YARN环境搭建
cd /root/tools/hadoop-2.6.0/etc/hadoop
1) mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2) yarn-stie.xml
vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3) 启动yarn
cd /root/tools/hadoop-2.6.0/sbin
./start-yarn.sh
使用jps命令查看是否启动
使用网页查看,端口8088
4) 停止yarn
./stop-yarn.sh
5) MapReduce作业提交到YARN上运行
数据准备 /home/data 目录下hello.txt 文件,文件内容如下图所示:
将hello.txt 放到hdfs里
cd /root/tools/hadoop-2.6.0/bin
创建文件夹/input/wc
./hadoop fs -mkdir -p /input/wc
将hello.txt 放到/input/wc/文件夹下
./hadoop fs -put /home/data/hello.txt /input/wc/
查看文件内容
/root/tools/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar
cd /root/tools/hadoop-2.6.0/bin
./hadoop jar /root/tools/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input/wc/hello.txt /output/wc/
运行后查看
。。。
使用hadoop cdh5.7.0版本。其它配置和前一样。
cd /home/tools/hadoop-2.6.0-cdh5.7.0/bin
./hadoop jar /home/tools/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/wc/hello.txt /output/wc/
使用web查看
说明作业测处理状态是成功的。
最终的单词统计结果如下图所示
hello 单词有2个, welcome单词有2个,world单词有1个。