Hadoop 历史服务器:作业跑完就消失?用它找回来
YARN Web UI 只能看到当前正在跑的作业。作业一旦完成,它就消失了——你看不到它跑了多久、占了多少资源、失败了为什么失败。
这就是历史服务器解决的问题:把已完成作业的日志和统计信息保存下来,方便事后追溯。
它只存 MapReduce 作业。Spark 有 Spark History Server,Flink 有 Flink History Server,各管各的。

核心配置:改两个文件
文件1:mapred-site.xml——历史服务器自己
1 | <!-- RPC 通信地址 --> |
hadoop1 换成你实际部署历史服务器的那台机器的主机名。
文件2:yarn-site.xml——让 YARN Web UI 能跳转过来
1 | <configuration> |
这条配置让 YARN Web UI 里的 “History” 链接能跳转到历史服务器。
创建 HDFS 目录
历史日志存 HDFS,先建好目录、给权限:
1 | hdfs dfs -mkdir -p /mr-history/tmp |
启动和验证
启动:
1 | mapred --daemon start historyserver |
验证进程:
1 | jps |
验证 Web UI:
浏览器打开 http://hadoop1:19888,能看到已完成作业列表。
验证 YARN 跳转:
去 YARN Web UI(http://<RM节点>:8088),找个已完成的作业,点 “History” 链接,能跳转到历史服务器页面说明配置成功。
怎么查历史日志
方式1:Web UI
- 打开
http://hadoop1:19888 - 点击作业 ID 看概览(启动时间、完成时间、Map/Reduce 数量)
- 点 “Maps” 或 “Reduces” 看具体任务的 stdout/stderr
- 点 “Counters” 看计数器(输入记录数、输出记录数等)
方式2:命令行
1 | 查看作业概况 |
工作原理
1 | 作业运行中 |
关键点:日志是作业运行时实时写的,不是作业完成后再收集的。 所以历史服务器必须提前启动,作业提交时它就得在。
常见问题
1. YARN Web UI 的 “History” 链接点不了或跳错
检查 yarn-site.xml 里的 yarn.log.server.url 是否配置正确,是不是能访问 http://hadoop1:19888。
2. 历史服务器启动了,但看不到历史作业
历史服务器只记录它启动之后才完成的作业。如果是启动之前就跑完的作业,它没有记录。
3. HDFS 目录权限不足导致日志写不进去
检查 /mr-history/tmp 和 /mr-history/done 的权限,确保运行 MapReduce 的用户有写权限。
4. 历史服务器内存不够
在 mapred-env.sh 里调大堆内存:
1 | export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=2048 |
5. 历史服务器关闭
1 | mapred --daemon stop historyserver |