一、架构讲解

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
Hadoop YARN 搭建


二 、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
        (2)方式2: 浏览器:http://hadoop000:8088

【10】停止yarn
    /www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/sbin 下

[[email protected] sbin]#   ./stop-yarn.sh


三、模拟作业运行

【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/

当我们再次执行该作业时,会报错(需要删除原来产生的文件才能再一次作业):
FileAlreadyExistsException:Output directory hdfs://hadoop000:8020/output/wc already exists
【3】访问

    yarn 主页访问页面:  http://hadoop000:50070/
    yarn 日志访问页面:  http://hadoop000:8088


四、Yarn 日志聚合参数配置

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}下


分类:

技术点:

相关文章: