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

时间:2014-09-09 21:05:17

标签: java hadoop mapreduce log4j yarn

我已经根据CDH 5.1.0的hadoop 2.3.0设置了YARN MapReduce迷你集群,其中包含1个节点管理器,4个本地目录和4个日志目录等等。它看起来或多或少有效。我未能实现的是来自容器的syslog日志记录。我看到容器日志目录,stdoutstderr文件,但没有syslog的MapReduce容器日志记录。适当的stderr警告我没有log4j配置,并且不包含任何其他字符串:

  

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

如何将常规日志记录添加到容器中?还有一次,它是YARN mini-cluaster。

任何建议或有用的观点?

只是为了减少经过多次尝试的答案:

  • 是的,我确定日志记录目录是正确的,我看到容器日志目录与我的应用程序之间存在关联。
  • 是的,MapReduce工作有效。至少那些有望工作的人。
  • 迷你群集记录本身是正常的,并根据我的设置。这只与容器有关。
  • 像DFS clsuter这样的低层正常工作。我这里甚至有HBase和ZK迷你集群,它们工作正常。我只需要记录MapReduce作业调试。

1 个答案:

答案 0 :(得分:3)

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

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

      BASE_PATH =“pwd”导出HADOOP_COMMON_HOME = $ {BASE_PATH}

      无法正常工作日志记录的根本原因是客户端map-reduce作业从YARN上的新VM开始,但不知道在哪里找到hadoop-yarn-server-nodemanager.jar,其中包含container-log4j.properties文件,而该文件又负责容器默认日志记录配置。现在一切正常。