YARN 聚合日志配置

1、 日志聚集介绍

MapReduce 是在各个机器上运行的, 在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在 HDFS 上, 这个过程就是日志聚集。如果打开了日志聚合的选项,即yarn.log-aggregation-enable,container的日志会拷贝到hdfs上去,并从机器中删除。可以使用yarn logs -applicationId 命令,来查看日志yarn logs命令,会打印出application对应的所有container的日志出来,当然,因为日志是在hdfs上的,我们自然也可以通过hdfs的命令行来直接从hdfs中查看日志,日志在hdfs中的目录,可以通过查看yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix属性来获知。

2、是否开启日志聚合区别

如果 打开日志聚合(使用 yarn.log-aggregation-enable配置),容器日志将复制到HDFS中,而本地计算机上的日志将被删除。查看日志可以通过 yarn logs 命令从群集中的任何位置查看。

yarn logs -applicationId <app ID>
  • 该命令会将指定的应用程序日志从所有的容器中打印所有的日志内容。您也可以使用HDFS shell 或API直接在HDFS中查看容器日志文件。
  • 他们所在的目录参考YARN配置(yarn.nodemanager.remote-app-log-dir和 yarn.nodemanager.remote-app-log-dir-suffix)。
  • 日志也可以通过Spark Web UI中的Executors 标签页查看。你需要运行spark 历史服务器和MapReduce历史服务器,并在yarn-site.xml正确配置yarn.log.server.url。
  • Spark历史记录服务器UI上的日志URL会将您重定向到MapReduce历史记录服务器以显示聚合日志。

如果 日志聚合未打开 时,日志将保存在每台计算机上的本地YARN_APP_LOGS_DIR,通常配置为 /tmp/logs 或 $HADOOP_HOME/logs/userlogs,取决于Hadoop版本和安装配置。

  • 查看容器的日志需要转到包含它们的主机并查看此目录。子目录按应用程序ID和容器ID组织日志文件。日志也可以在执行程序选项卡下的Spark Web UI上使用,并且不需要运行MapReduce历史记录服务器。
  • 要查看每个容器的启动环境,请增加 yarn.nodemanager.delete.debug-delay-sec 一个较大的值(例如36000),然后通过 yarn.nodemanager.local-dirs 在启动容器的节点上访问应用程序缓存。
  • 该目录包含启动脚本,JAR以及用于启动每个容器的所有环境变量。这个过程特别适用于调试类路径问题。
    (请注意,启用此功能需要具有群集设置的管理权限并重新启动所有节点管理器。因此,这不适用于托管群集)。
3、日志参数

yarn-site.xml中有几个配置项与日志的保存与删除,本地job执行文件的保留与删除有关。若不做配置,日志和job.jar会在application执行结束后被直接删除掉。

yarn.log-aggregation-enable      true                  执行结束后收集(聚合)各个container本地的日志
yarn.nodemanager.remote-app-log-dir  /app-logs          聚合日志后在hdfs的存放地址
yarn.nodemanager.remote-app-log-dir-suffix  logs         聚合日志存放的后缀,存放地址由 ${remote-app-log-dir}/${user}/{thisParam}构成
yarn.log-aggregation.retain-seconds 2592000            聚合日志在hdfs上的保留时间,以秒为单位,到时后被删除,保留30天后删除 
yarn.log.server.url http://hostname:19888/jobhistory/logs    log server的地址  
yarn.nodemanager.local-dirs /hadoop/yarn/local          存放 application 运行的本地文件(计算过程中的中间数据存储)的根目录,执行完毕后删除,按用户名存储 
yarn.nodemanager.log-dirs /hadoop/yarn/log            存放 container 运行的本地日志的根目录,执行完毕后删除,按用户名存储 
yarn.nodemanager.log.retain-seconds 604800            本地日志的保留时间,只有aggregation没有enable时才生效 
yarn.nodemanager.delete.debug-delay-sec 600            yarn 的 DeletionService 在任务结束多长时间后,删除本地化的日志(yarn.nodemanager.local-dirs)和container的运行日志(yarn.nodemanager.log-dirs)。 这个时间最好设置的大一点。
4、日志聚合配置文件
  1. 其中executor日志分为运行时日志以及结束日志,两种日志分别存放于不同的位置,运行时候的日志文件存放于yarn.nodemanager.log−dirs/{ApplicationID}。
要实现日志聚集,只需要在yarn-site.xml中配置如下几个参数:
(1) yarn.log-aggregation-enable
参数解释:是否启用日志聚集功能。
默认值:false
(2) yarn.log-aggregation.retain-seconds
参数解释:在HDFS上聚集的日志最多保存多长时间。
默认值:-1
(3) yarn.log-aggregation.retain-check-interval-seconds
参数解释:多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10。
默认值:-1
(4) yarn.nodemanager.remote-app-log-dir
参数解释:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。
默认值:/tmp/logs
<property>
    <!--开启日志聚合-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <!--日志聚合hdfs存储路径-->
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/tmp/logs</value>
</property>
<property>
    <!--hdfs上的日志保留时间-->
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

<property>
    <!--应用执行时存储路径-->
    <name>yarn.nodemanager.log-dirs</name>
    <value>file:/mnt/ddb/2/hadoop/nm</value>
</property>

<property>
    <!--应用执行完日志保留的时间,默认0,即执行完立刻删除-->
    <name>yarn.nodemanager.delete.debug-delay-sec</name>
    <value>0</value>
</property>
  1. 运行时候的executor日志存放于:
root@hadoop01:/opt/hadoop-2.7.7/hadoop/nm/application_1471515078641_0007
# ls
container_1471515078641_0007_01_000001 
container_1471515078641_0007_01_000002  
container_1471515078641_0007_01_000003

注:其中container_1471515078641_0007_01_000001为RM为application_1471515078641_0007分配的第一个container,即AM所在的container,第一个container都是运来启动AM的,containerID形式为,container_APPID_01_000001,你在RM日志文件里面根据container_APPID搜索即可看到为该APPID分配的container的分布情况及生命周期。

  1. 运行结束以后日志会聚合到HDFS上面去,运行结束的日志文件存入于/tmp/logs/${user}/logs。
drwxrwx---   - root supergroup          0 2016-08-18 18:29 /tmp/logs/root/logs/application_1471515078641_0002
drwxrwx---   - root supergroup          0 2016-08-18 19:10 /tmp/logs/root/logs/application_1471515078641_0003
drwxrwx---   - root supergroup          0 2016-08-18 19:17 /tmp/logs/root/logs/application_1471515078641_0004
  1. 运行结束后,可以通过以下命令查看日志:
yarn logs --applicationId <id>
5、通过webUI查看yarn上任务聚合日志

1.配置文件上增加配置信息
yarn-site.xml

<!-- 日志聚集功能使能 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>
<property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/tmp/logs</value>
</property>

<property>
    <name>yarn.log.server.url</name>
    <value>http://100.86.40.113:19888/jobhistory/logs/</value>
</property>
<property> 
    <name>yarn.nodemanager.vmem-check-enabled</name> 
    <value>false</value> 
</property> 
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>106800</value>
</property>
<property>
          <name>mapreduce.jobhistory.address</name>
        <value>100.86.40.113:10020</value>
</property>
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>100.86.40.113:19888</value>
</property>

mapred-site.xml

<property>
    <!-- 表示提交到hadoop中的任务采用yarn来运行,要是已经有该配置则无需重复配置 -->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
  <!--日志监控服务的地址,一般填写为nodenode机器地址 -->
    <name>mapreduce.jobhistroy.address</name>
    <value>100.86.40.113:10020</value>
</property>
<property>
    <name>mapreduce.jobhistroy.webapp.address</name>
    <value>100.86.40.113:19888</value>
</property>

2.启动JobHistoryServer

# hadoop的bin目录下执行
sbin/mr-jobhistory-daemon.sh start historyserver

3.访问yarnweb页面查看日志
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值