Yarn 迷你集群容器日志目录不包含 syslog 文件

2024-02-23

我已经基于 CDH 5.1.0 的 hadoop 2.3.0 设置了带有 1 个节点管理器、4 个本地目录和 4 个日志目录等的 YARN MapReduce 迷你集群。它看起来或多或少起作用。我未能实现的是从容器进行系统日志记录。我看到容器日志目录,stdout and stderr文件但不是syslog使用 MapReduce 容器日志记录。合适的stderr警告我没有 log4j 配置并且不包含任何其他字符串:

log4j:WARN 找不到记录器的附加程序 (org.apache.hadoop.metrics2.impl.MetricsSystemImpl)。 log4j:请警告 正确初始化 log4j 系统。 log4j:警告 请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息。

如何向我的容器添加正常日志记录?还有一次,它是 YARN 迷你集群。

有什么建议或有用的观点吗?

只是为了减少肯定尝试过的方法的数量作为答案:

  • 是的,我确定日志目录是正确的,并且我看到容器日志目录和我的应用程序之间的相关性。
  • 是的,MapReduce 作业可以工作。至少那些预计要工作的人是这样。
  • 迷你集群日志记录本身是正常的,并且符合我的设置。这仅与容器有关。
  • DFS 集群等较低层工作正常。我这里甚至还有 HBase 和 ZK 迷你集群,它们工作正常。只是我需要记录 MapReduce 作业调试。

好吧,最后碰巧是关于类路径、客户端配置和打包。

  1. 客户端配置应包括 YARN 应用程序的正确类路径。就我而言,我添加了以下几行yarn-site.xml(请注意$HADOOP_COMMON_HOME代换):
<property>
    <name>yarn.application.classpath</name>
    <value>$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*</value>
</property>
  1. 我已将以下变量定义添加到迷你集群启动脚本中(值得注意的是,我已将所有迷你集群服务器端 JAR 放入./lib相对于迷你集群启动脚本:

基本路径=“pwd" 导出 HADOOP_COMMON_HOME=${BASE_PATH}

日志记录不起作用的根本原因是客户端映射减少作业在 YARN 上的新虚拟机内开始,而不知道在哪里定位hadoop-yarn-server-nodemanager.jar其中包含container-log4j.properties文件,该文件又负责容器默认日志记录配置。现在一切正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yarn 迷你集群容器日志目录不包含 syslog 文件 的相关文章

随机推荐