我已在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
我是否需要更改其他配置?或者我以错误的方式访问日志?
谢谢。
答案 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>
答案 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 ..