说明:本文提及的所有配置参数,都是基于Hadoop 2.5.0-cdh5.2.0环境。
MapReduce(MR)的调试是一个比较麻烦的问题,除了一些辅助调试工具(如mrunit)外,相信通过日志定位问题仍然是一个比较常见的方法。虽然这种方法比较原始,但是很多时候也能解决大问题......
下面将描述使用MR的日志时,需要注意的一些问题。
1. MR运行过程中,日志将暂存于yarn.nodemanager.log-dirs配置项指定的本地路径下,默认为/var/log/hadoop-yarn/container;
2. MR运行结束后(无论正常结束与否),将持久化日志到yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix配置项指定的HDFS路径下,前者默认为/tmp/logs,后者默认为logs。HDFS的实际路径为${yarn.nodemanager.remote-app-log-dir}/${user}/${yarn.nodemanager.remote-app-log-dir-suffix}/${application_id},例如:/tmp/logs/root/logs/application_1427333457223_0068;
3. 日志持久化后,会删除本地的暂存日志;
4. 在自定义的SortComparatorClass中定义的日志,将输出在map日志中;在自定义的GroupingComparatorClass中定义的日志,将输出在reduce日志中;在自定义WritableComparable中定义的日志,如果在map或者reduce中使用了该Writable