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

3ks5zfa0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(707)

我已启用xml文件中的日志: yarn-site.xml ,我重新开始 yarn 通过这样做:

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

我运行了我的应用程序,然后我看到 applicationIDyarn application -list . 所以,我这样做: yarn logs -applicationId <application ID> ,我得到如下结果:

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

我需要更改其他配置吗?还是我访问日志的方式不对?
谢谢您。

x7rlezfr

x7rlezfr1#

启用日志聚合

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

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

w8rqjzmb2#

它可能是另一个所有者保存的。您可以尝试在命令中指定应用程序所有者:
Yarn原木-所有者-应用程序id。。

tyg4sfes

tyg4sfes3#

在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

mccptt67

mccptt674#

yarn application -list

将只列出处于已提交、已接受或正在运行状态的应用程序。
日志聚合收集每个容器的日志,并将这些日志移动到中配置的目录中 yarn.nodemanager.remote-app-log-dir 只有在申请完成之后。请参阅的说明 yarn.log-aggregation-enable 这里的财产。
所以 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

相关问题