如何保留YARN的日志文件?

rab*_*ens 14 hadoop hadoop-yarn

突然,我的YARN集群已停止工作,我提交的所有内容都以"退出代码1"失败.我想跟踪该问题,但是一旦应用程序失败,YARN就会删除日志文件.为了保留这些日志文件,我必须为YARN调整什么配置设置?

Man*_*lur 25

您的容器似乎正在退出,退出代码为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>
Run Code Online (Sandbox Code Playgroud)

因此,特定应用程序的所有容器日志都将在节点管理器机器中的"e:\ hdpdata\hadoop\logs\{application-id}\{container-id}"文件夹中找到,其中Application Master跑了.

我们假设我的应用程序:"application_1443377528298_0010"FAILED.在YARNRM的UI中(由config参数:yarn.resourcemanager.webapp.address确定),您可以获取有关运行应用程序管理器的节点的信息.在下图中,应用程序管理器在计算机"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>
Run Code Online (Sandbox Code Playgroud)

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

当MapReduce应用程序运行时,您可以从YARN的Web UI访问日志.应用程序完成后,将通过作业历史记录服务器提供日志.

在您的情况下,如果要在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>
Run Code Online (Sandbox Code Playgroud)

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

  <property>
    <name>yarn.log.server.url</name>
    <value>http://{job-history-hostname}:19888/jobhistory/logs</value>
  </property>
Run Code Online (Sandbox Code Playgroud)

我在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