如何删除纱线日志

How to delete yarn logs

我对 YARN 还很陌生。我 运行 创建日志的 oozie 作业。

我可以看到纱线日志

yarn logs -applicationId application_123456789_12345678

我想知道如何删除那些日志?我可以只删除文件以删除日志吗?

作业完成后,NodeManager 将为每个容器保留日志 ${yarn.nodemanager.log.retain-seconds},默认情况下为 10800 秒(3 小时),并在它们过期后删除它们。但是,如果 ${yarn.log-aggregation-enable} 启用,则 NodeManager 将立即将所有容器日志连接到一个文件中,并将它们上传到 ${yarn.nodemanager.remote-app-log-dir}/${user.name}/logs/<application ID> 中的 HDFS,并从本地用户日志目录中删除它们

Documentation表示yarn.nodemanager.delete.debug-delay-sec:

应用程序完成后,节点管理器的 DeletionService 将删除应用程序的本地化文件目录和日志目录之前的秒数。要诊断 Yarn 应用程序问题,请将此 属性 的值设置得足够大(例如,设置为 600 = 10 分钟)以允许检查这些目录。更改属性的值后,必须重启nodemanager才能生效。 Yarn 应用程序工作目录的根目录可以使用 yarn.nodemanager.local-dirs 属性(见下文)配置,Yarn 应用程序日志目录的根目录可以使用 yarn.nodemanager.log-dirs 属性(另见下文)。

您必须配置 yarn-default.xml:

  <property>
    <description>
      Number of seconds after an application finishes before the nodemanager's DeletionService will delete the application's localized file directory and log directory.
    </description>
    <name>yarn.nodemanager.delete.debug-delay-sec</name>
    <value>0</value>
  </property>

也许保留秒数会有用:

<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>3600</value>
</property>

没有从 CLI 中删除 yarn 日志的 yarn 命令。

您可以使用Linux rm 到yarn 日志目录yarn.nodemanager.log-dirs /application_${appid} 进行删除。单独的容器日志目录将在此下方,在名为 container_{$contid} 的目录中。每个容器目录将包含该容器生成的文件 stderrstdinsyslog

delete ${yarn.nodemanager.remote-app-log-dir}/${user}/${application_id}/...