Hadoop 3.2.4本地模式MapReduce任务无日志及统计信息求助
解决Hadoop 3.2.4本地模式MapReduce日志及统计信息不输出问题
1. 修复log4j.properties拼写错误
你的配置文件存在一处致命拼写错误,导致MapReduce相关日志规则无法生效:
# 错误配置(缺少字母"o") log4j.logger.rg.apache.hadoop.mapreduce=DEBUG, A1 # 修正后 log4j.logger.org.apache.hadoop.mapreduce=DEBUG, A1
2. 确保配置文件在类路径中
- Maven/Gradle项目:将
log4j.properties放在src/main/resources目录下,构建工具会自动将其加入类路径 - 普通Java项目:启动时通过
-classpath参数将配置文件所在目录包含进去
3. 显式指定log4j配置路径(强制覆盖默认配置)
Hadoop本地模式可能会加载自带的log4j配置,需通过JVM参数强制指定自定义配置:
命令行运行
java -Dlog4j.configuration=file:/绝对路径/to/log4j.properties -jar wordcount.jar
IDE运行
在Run Configuration的VM Options中添加:
-Dlog4j.configuration=file:/你的项目路径/src/main/resources/log4j.properties
4. 调整日志级别以输出统计信息
修改log4j.properties,确保Hadoop核心及MapReduce组件的日志级别足够输出统计数据:
# 保留根日志配置 log4j.rootLogger=INFO, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n # 开启Hadoop核心日志 log4j.logger.org.apache.hadoop=INFO, A1 # 开启MapReduce任务的进度、统计日志 log4j.logger.org.apache.hadoop.mapreduce=INFO, A1 log4j.logger.org.apache.hadoop.mapred=INFO, A1
INFO级别已足够输出任务进度、输入输出字节数、处理时长等统计信息,DEBUG会输出过多调试细节,按需启用即可。
5. 代码优化(提升配置一致性)
你的代码中FileSystem.get(new Configuration())重新创建了独立配置实例,建议复用Job的配置,避免潜在问题:
// 原代码 FileSystem fs = FileSystem.get(new Configuration()); // 修改为 FileSystem fs = FileSystem.get(job.getConfiguration());
验证标准
运行任务后,控制台应输出:
- MapReduce任务的进度百分比(如
map 100% reduce 100%) - 任务统计数据(输入/输出记录数、字节数、耗时等)
org.apache.hadoop.mapreduce包下的系统日志信息
内容的提问来源于stack exchange,提问作者Bagira
相关产品推荐
相关产品推荐

