一、架构讲解
1 RM(ResourceManager) + N 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、环境变量
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
|
二 、YARN环境搭建
注意事项:
1、首先Hadoop 需要先搭建起来并且Hdfs已经启动。参考: Hadoop HDFS环境搭建
2、Yarn 的配置仅在Hadoop 安装包的etc/hadoop文件下进行配置,是Hadoop 中文件。
3、假如Hadoop 安装目录为 /www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/
4、以上说明假设已经全部符合条件
配置说明:
【1】vi /www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
|
【2】vi /www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
|
【3】启动yarn:
cd /www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/sbin
[[email protected] sbin]# ./start-yarn.sh |
【9】 验证是否启动成功:
(1)方式1:命令 : jps 。
存在三个节点进程即成功DataNode、SecondaryNameNode、NameNode、 ResourceManager、 NodeManager
【10】停止yarn
在/www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/sbin 下
三、模拟作业运行
【1】需求:提交mr作业到yarn上运行: wc
【2】运行
假如作业文件位置:/www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
命令:
hadoop jar /www/instl/hadoop/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/ |
当我们再次执行该作业时,会报错(需要删除原来产生的文件才能再一次作业):
【3】访问
yarn 主页访问页面: http://hadoop000:50070/
YARN日志聚合相关参数配置
日志聚合是YARN提供的日志*化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个*化存储和分析机制。默认情况下,Container/任务日志存在在各个NodeManager上,如果启用日志聚合功能需要额外的配置。
参数配置yarn-site.xml
1.yarn.log-aggregation-enable
参数说明:是否启用日志聚合功能,日志聚合开启后保存到HDFS上。
默认值:false
2.yarn.log-aggregation.retain-seconds
参数说明:聚合后的日志在HDFS上保存多长时间,单位为s。
默认值:-1(不启用日志聚合),例如设置为86400,24小时
3.yarn.log-aggregation.retain-check-interval-seconds
参数说明:删除任务在HDFS上执行的间隔,执行时候将满足条件的日志删除(超过参数2设置的时间的日志),如果是0或者负数,则为参数2设置值的1/10,上例值在此处为8640s。
默认值:-1
4.yarn.nodemanager.log.retain-seconds
参数说明:当不启用日志聚合此参数生效,日志文件保存在本地的时间,单位为s
默认值:10800
5.yarn.nodemanager.remote-app-log-dir
参数说明:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效),修改为保存的日志文件夹。
默认值:/tmp/logs
6.yarn.nodemanager.remote-app-log-dir-suffix
参数说明:远程日志目录子目录名称(启用日志聚集功能时有效)。
默认值:logs 日志将被转移到目录${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}下