Yarn与MapReduce
--YARN 资源调度框架
YARN架构
1个ResourceManager + N个NodeManager
ResourceManager的职责
一个集群active状态的RM只有一个 负责整个集群的资源管理和调度
1)处理客户端的请求
2)启动/监控ApplicationMaster 一个作业对一个AM
3)监控NM
4)系统的资源分配和调度
NodeManger:整个集群中有N个,负责单个节点的资源管理和使用 以及task的运行情况
1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态
2)接收并处理RM的Container启停的各种命令
3)单个节点的资源管理和任务管理
ApplicationMaster ; 每个作业对应一个,负责应用程序的管理
- 数据切分
2)为应用程序向RM申请资源(Container),并分配给内部任务
3)与NM通信以启停task ,task运行在Container中
4)task的监控与容错
Container: 对任务运行情况的描述 : cpu,memory ,环境变量
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启动任务
- NM启动我们作业对应的task
YARN 环境搭建
配置文件
hadoop目录下
vi etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
开启yarn
cd sbin
./start-yarn.sh
停止
cd sbin
./stop-yarn.sh
web接口模式访问yarn
http://ip:8088/cluster
提交mapreduce作业到yarn上运行
创建一个文件 hello.txt
上传一个文件
hadoop fs -put hello.txt /ip/wc
进入hadoop根目录下/share/hadoop/mapreduce/
运行jar包 wordcount统计单词出现的次数 空格拆分
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /ip/wc/hello.txt /output/wc
打开yarn的web页面可以发现 有一个任务被提交
hadoop fs -ls /output/wc 可以看到有的文件part-r-00000
hadoop fs -cat /output/wc/part-r-00000 就可以看到统计后的结果