YARN的历史日志
历史日志概述
我们在YARN上运行MapReduce的程序的时候,可以在控制台上看到任务的日志输出,以获取到任务的运行状态。同时,YARN也会将日志写在本地的**$HADOOP_HOMOE/logs/userlogs**文件夹中,我们可以到文件夹中进行日志的查看。但是这个文件夹中的内容,会随着YARN的重启而被删除掉。那么此时我们将如何查看日志?
此时就需要开启Hadoop的历史日志服务了,Hadoop会将MapReduce的任务日志在HDFS也保留一份,我们可以通过Hadoop的历史任务服务来查看到之前的历史日志!
但是每一个程序会被分布在不同的节点上进行运行,我们在进行任务查看的时候还得一个个的去指定节点进行查看,并一个个的找MapTask或者ReduceTask的日志,很麻烦!预设YARN提供了历史日志聚合的服务!
顾名思义,就是将每一个程序的历史日志都聚合在一起,存储在HDFS上,方便查看!
mr-historyserver
顾名思义,就是去记录MapReduce的历史日志的。接下来我们从配置开始、到日志聚合、运行任务去讲解。
配置文件
-
mapred-site.xml
<!-- 添加如下配置 --> <!-- 历史任务的内部通讯地址 --> <property> <name>MapReduce.jobhistory.address</name> <value>qianfeng01:10020</value> </property> <!--历史任务的外部监听页面--> <property> <name>MapReduce.jobhistory.webapp.address</name> <value>qianfeng01:19888</value> </property>
-
yarn-site.xml
<!-- 添加如下配置 --> <!-- 是否需要开启日志聚合 --> <!-- 开启日志聚合后,将会将各个Container的日志保存在yarn.nodemanager.remote-app-log-dir的位置 --> <!-- 默认保存在/tmp/logs --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 历史日志在HDFS保存的时间,单位是秒 --> <!-- 默认的是-1,表示永久保存 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <property> <name>yarn.log.server.url</name> <value>http://qianfeng01:19888/jobhistory/logs</value> </property>
分发配置
[root@qianfeng01 ~]# cd $HADOOP_HOME/etc/hadoop
[root@qianfeng01 hadoop]# scp mapred-site.xml yarn-site.xml qianfeng02:$PWD
[root@qianfeng01 hadoop]# scp mapred-site.xml yarn-site.xml qianfeng03:$PWD
开启历史服务
# 重启YARN集群
[root@qianfeng01 ~]# stop-yarn.sh
[root@qianfeng01 ~]# start-yarn.sh
# 打开历史服务
[root@qianfeng01 ~]# mapred --daemon start historyserver
# 开启之后,通过jps可以查看到 JobHistoryServer 进程,表示开启成功
执行任务
[root@qianfeng01 ~]# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
我们以官方案例wordcount为例,现在在运行完这个任务后,就会在WebUI上看到这个任务。我们可以点击任务的ID进入到任务的详情页,此时可以查看日志。
也可以在http://192.168.10.101:19888查看每一个MapTask、ReduceTask的日志
版权声明:本文为weixin_42044506原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。