我已经根据CDH 5.1.0的hadoop 2.3.0设置了YARN MapReduce迷你集群,其中包含1个节点管理器,4个本地目录和4个日志目录等等。它看起来或多或少有效。我未能实现的是来自容器的syslog日志记录。我看到容器日志目录,stdout
和stderr
文件,但没有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。
任何建议或有用的观点?
只是为了减少经过多次尝试的答案:
答案 0 :(得分:3)
好的,最后碰巧是关于类路径,客户端配置和打包。
yarn-site.xml
(请注意$HADOOP_COMMON_HOME
替换):<property> <name>yarn.application.classpath</name> <value>$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*</value> </property>
./lib
:BASE_PATH =“
pwd
”导出HADOOP_COMMON_HOME = $ {BASE_PATH}
无法正常工作日志记录的根本原因是客户端map-reduce作业从YARN上的新VM开始,但不知道在哪里找到hadoop-yarn-server-nodemanager.jar
,其中包含container-log4j.properties
文件,而该文件又负责容器默认日志记录配置。现在一切正常。