前言
今天在跑MR任务时报错,需要查看下Yarn的任务的执行日志,
使用命令yarn logs -applicationId <app ID>
但是报错,今天整理并记录一下。
报错内容
/tmp/logs/hive/logs/application_1562814267987_0012 does not exist.
Log aggregation has not completed or is not enabled.
报错原因
Yarn日志没有聚合.并且也没有创建对应的linux文件路径。
解决方案
配置yarn-site.xml
yarn.log-aggregation-enable
参数解释:是否启用日志聚集功能。
<property>
<description>Whether to enable log aggregation</description>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
yarn.log-aggregation.retain-seconds
参数解释:在HDFS上聚集的日志最多保存多长时间。
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>-1</value>
</property>
yarn.nodemanager.remote-app-log-dir
参数解释:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
创建对应的文件路径
hdfs dfs mkdir -p /tmp/logs/hive/logs/
这里可以使用自动化工具批量在每个nodemanager节点上创建。
重新查看log日志,有数据。
问题解决!!!
水晶帘动微风起,满架蔷薇一院香。——高骈《山亭夏日》