为什么我的纱线应用程序即使启用了日志记录也没有日志?

时间:2017-03-09 02:46:09

标签: hadoop apache-spark logging yarn

我已在xml文件中启用了日志:yarn-site.xml,并通过执行以下操作重新启动yarn

sudo service hadoop-yarn-resourcemanager restart
sudo service hadoop-yarn-nodemanager restart

我运行了我的应用程序,然后在applicationID中看到了yarn application -list。所以,我这样做:yarn logs -applicationId <application ID>,我得到以下内容:

hdfs://<ip address>/var/log/hadoop-yarn/path/to/application/  does not have any log files

我是否需要更改其他配置?或者我以错误的方式访问日志?

谢谢。

4 个答案:

答案 0 :(得分:7)

yarn application -list

将仅列出 提交 已接受 中的应用程序RUNNING 状态。

日志聚合收集每个容器的日志,并仅在应用程序完成后将这些日志移动到yarn.nodemanager.remote-app-log-dir中配置的目录中。请参阅yarn.log-aggregation-enable属性here的说明。

因此,该命令列出的applicationId尚未完成,并且尚未收集日志。因此,尝试访问正在运行的应用程序的日志时的响应

hdfs://<ip address>/var/log/hadoop-yarn/path/to/application/  does not have any log files

一旦应用程序完成,您可以尝试使用相同的命令yarn logs -applicationId <application ID>来查看日志。

要列出所有 已完成 应用程序,请使用

yarn application -list -appStates FINISHED

或列出所有应用程序

yarn application -list -appStates ALL

答案 1 :(得分:2)

在hadoop及更高版本的2.3.2版中,您可以使用yarn-site.xml中的此配置在运行作业上每小时进行一次日志聚合:

<property>
    <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
    <value>3600</value>
</property>

详情请见https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.2/bk_yarn_resource_mgt/content/ref-375ff479-e530-46d8-9f96-8b52dadb5183.1.html

答案 2 :(得分:1)

启用日志聚合

yarn-site.xml文件中启用了日志聚合。 yarn.log-aggregation-enable 属性为运行的应用程序启用日志聚合。

<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>

答案 3 :(得分:1)

它可能与另一个appOwner一起保存。您可以尝试在命令中指定应用程序所有者:

纱线日志-appOwner ..-application_id ..