MapReduce 历史服务口
Hadoop MapReduce 的历史服务端口:已完成作业的计数器、任务时序、失败堆栈与重试次数都在 19888 上回放,回答「昨天那个任务为什么慢」时它是第一入口。数据来自 HDFS 上的作业历史目录,服务本身不参与作业调度。
基本信息
| 服务 | MapReduce JobHistory Server |
|---|---|
| 协议 | TCP/HTTP |
| 默认端口 | 19888 |
| 数据源 | HDFS 上的作业历史中间与完成目录 |
| 暴露面 | 仅大数据内网 |
典型使用场景
- 回放已完成作业的计数器与耗时
- 定位失败任务与重试情况
- 对比同一作业不同日期的资源使用
- 排查数据倾斜与溢写
- 与集群资源管理器界面配合看队列与资源
启动与核对
启动与核对
mapred --daemon start historyserver
curl -sI http://nn01:19888/jobhistory | head -3
# 相关配置: mapreduce.jobhistory.intermediate-done-dir / done-dir
# 资源管理器界面: http://rm01:8088
ss -lntp | grep 19888排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 服务可达 | curl -sI http://host:19888/jobhistory | 无响应:服务未起或端口被改 |
| 作业列表 | 界面中的已完成作业 | 作业缺失:历史目录未配置或日志聚合未开 |
| 失败信息 | 作业详情中的失败任务 | 只看作业级状态:细节在任务与日志里 |
| 聚合日志 | 日志聚合相关配置 | 点不开日志:聚合未启用或权限不足 |
历史服务有三个最容易出错的配置点:中间目录、完成目录与日志聚合开关。作业跑完却看不到,或能看到作业但点不开日志,基本都落在这三处。
和 Spark 历史服务的分工
Spark on YARN 的作业不会出现在 19888:Spark 有自己的历史服务入口(默认 18080)。两套历史线按计算框架划分,排查前先确认作业类型,再去对应入口找,能省掉一轮无效搜索。
历史服务常与 NameNode 同机部署,网络策略只需放通运维网段;它展示的作业名与数据路径属于内部信息,不应对外暴露。
作业历史目录不做清理:服务变慢、HDFS 空间被大量小文件占用,最终拖慢整个集群的元数据操作。
历史服务的界面依赖 HDFS 读取,HDFS 响应慢时页面加载同样变慢,别急着把这种慢判定成历史服务故障。