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

Hadoop 为什么即使启用了日志记录,我的应用程序也没有日志?,hadoop,apache-spark,logging,yarn,Hadoop,Apache Spark,Logging,Yarn,我已启用xml文件中的日志:warn site.xml,并通过执行以下操作重新启动了warn: sudo service hadoop-yarn-resourcemanager restart sudo service hadoop-yarn-nodemanager restart 我运行了我的应用程序,然后在纱线应用程序-列表中看到应用程序ID。因此,我这样做:纱线日志-applicationId,我得到以下结果: hdfs://<ip address>/var/log/hado

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

sudo service hadoop-yarn-resourcemanager restart
sudo service hadoop-yarn-nodemanager restart
我运行了我的应用程序,然后在
纱线应用程序-列表中看到
应用程序ID
。因此,我这样做:
纱线日志-applicationId
,我得到以下结果:

hdfs://<ip address>/var/log/hadoop-yarn/path/to/application/  does not have any log files
hdfs:///var/log/hadoop-yarn/path/to/application/  没有任何日志文件
我是否需要更改其他配置?还是我访问日志的方式不对

谢谢。

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

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

warn.log-aggregation-enable
真的

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

纱线原木-所有者-应用程序id

yarn application -list
将仅列出处于“已提交”、“已接受”或“正在运行”状态的应用程序

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

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

hdfs://<ip address>/var/log/hadoop-yarn/path/to/application/  does not have any log files
或列出所有应用程序

yarn application -list -appStates ALL

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

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

纱线.nodemanager.log-aggregation.roll-monitoring-interval-seconds
3600

请参阅此了解更多详细信息:

您的spark日志的保留策略是什么?我不知道..如何找到?Thread log dir..中是否存在任何日志文件?上述内容正是我在
Thread site.xml
文件中的内容。我还能做什么?我还能做什么@我不确定还有什么问题。只需转到纱线资源管理器UI,检查您的作业是否在所有作业列表中。请参阅“节点管理器配置”上的此链接。太好了,我已经配置了这个参数,但是仍然没有运行作业的日志。当应用程序仍处于一个预聚合阶段时,您能评论一下如何查看日志吗?另外,如果作业具有自动重试功能,我们如何区分运行?您应该能够在应用程序主UI中看到正在运行的容器日志。谢谢franklinsijo。如果日志太大,浏览器无法显示它们,我将转到容器的节点,然后查看$HADOOP\u HOME/logs。另外,关于我前面的问题,容器ID在每次任务的重试中都会有所不同。对于每个任务,您应该能够根据其尝试ID获取日志。
<property>
    <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
    <value>3600</value>
</property>