【问题标题】:How to keep YARN's log files?如何保存 YARN 的日志文件?
【发布时间】:2023-03-16 09:30:02
【问题描述】:

突然,我的 YARN 集群停止工作,我提交的所有内容都失败并显示“退出代码 1”。我想追查这个问题,但是一旦应用程序失败,YARN 就会删除日志文件。为了让 YARN 保留这些日志文件,我必须调整哪些配置设置?

【问题讨论】:

    标签: hadoop hadoop-yarn


    【解决方案1】:

    您的容器似乎正在以退出代码 1 退出。

    您无法在 UI 上看到日志,因为默认情况下,日志聚合是禁用的。以下参数确定日志聚合: “yarn.log-aggregation-enable”(如果日志聚合被禁用,则设置为“false”)。

    如果设置为“false”,则所有节点管理器将容器日志存储在本地目录中,由以下配置参数确定: “yarn.nodemanager.log-dirs”。

    例如就我而言,这设置为:

      <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>e:\hdpdata\hadoop\logs</value>
      </property>
    

    因此,我针对特定应用程序的所有容器日志都将在节点管理器机器的文件夹“e:\hdpdata\hadoop\logs\ {application-id} \ {container-id}”中找到,其中Application Master 运行。

    假设我的应用程序:“application_1443377528298_0010”失败。在 YARNRM 的 UI(由配置参数确定:yarn.resourcemanager.webapp.address)中,您可以获取有关运行应用程序管理器的节点的信息。下图中,Application Manager 在机器“120243”上运行。

    如果您登录本机并在文件夹“e:\hdpdata\hadoop\logs\application_1443377528298_0010\”中搜索,可以看到应用程序“application_1443377528298_0010”的所有容器的日志。

    但是,现在如果您想通过 YARN RM Web UI 查看日志,那么您需要启用日志聚合。为此,您需要在 yarn-site.xml 中设置以下参数:

      <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>
      <property>
         <name>yarn.nodemanager.remote-app-log-dir</name>
         <value>/app-logs</value>
      </property>
      <property>
          <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
          <value>logs</value>
      </property>
    

    通过上述设置,我的日志将汇总到 HDFS 中的“/app-logs/{username}/logs/”。在此文件夹下,您可以找到迄今为止运行的所有应用程序的日志。同样,日志保留时间由配置参数“yarn.log-aggregation.retain-seconds”(保留聚合日志的时间)决定。

    当 MapReduce 应用程序运行时,您可以从 YARN 的 Web UI 访问日志。申请完成后,日志将通过 Job History Server 提供。

    在您的情况下,如果您想在 Web UI 上查看日志,在应用程序终止后,您还需要开始运行 MapReduce 作业历史服务器。要启用它,请在 mapred-site.xml 中设置以下配置参数:

      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>{job-history-hostname}:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>{job-history-hostname}:19888</value>
      </property>
    

    并在yarn-site.xml中设置如下配置参数:

      <property>
        <name>yarn.log.server.url</name>
        <value>http://{job-history-hostname}:19888/jobhistory/logs</value>
      </property>
    

    我已经从 Windows 上的 HDP 安装中复制了设置,这些设置对我有用。这些也应该对你有用。 上述各项配置的说明,请参考以下链接:

    https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

    https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

    【讨论】:

    • “你可以看到所有容器的日志”——不,问题是日志在作业失败后立即被自动删除。
    • 我猜,参数:yarn.log-aggregation.retain-seconds 决定,日志保留多长时间。你能检查它的值吗?
    • 遇到类似情况。 是和 master 的 ip 一样还是配置了 yarn-site.xml 的 worker/机器?
    • 它是您的 Yarn 集群中的作业历史服务器的 IP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2019-12-12
    • 1970-01-01
    • 2023-03-26
    • 2020-08-16
    • 2023-01-29
    • 2016-08-28
    相关资源
    最近更新 更多