JobHistory Server的配置和启动

在 Hadoop 集群里,JobHistory Server(JHS)负责为所有已完成的 MapReduce 作业提供元数据与 Web 可视化;只有它启动并配置正确,开发者才能通过 http://<host>:19888 查看作业的执行详情、计数器和任务日志。下面文档按 CSDN 博文的常见结构,用 Markdown 给出 配置 + 启动 + 排错 的全流程示例,涵盖 Hadoop 2.x 与 3.x 两代命令差异,并列出默认端口、核心参数与常见错误定位方法。


JobHistory Server 是什么?

在 YARN 模式下,作业运行结束后,ApplicationMaster 会将中间日志推送到 HDFS 的 mapreduce.jobhistory.intermediate-done-dir,而 JHS 定期扫描并读取日志,再提供查询 UI (docs.ezmeral.hpe.com, docs.ezmeral.hpe.com)。默认端口:

服务端口关键参数
RPC 服务10020mapreduce.jobhistory.address
Web UI19888mapreduce.jobhistory.webapp.address

这些端口可在 mapred-site.xml 中修改 (docs.ezmeral.hpe.com, o.onslip.net)。


关键配置(mapred-site.xml

<configuration>
  <!-- RPC 绑定 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>0.0.0.0:10020</value>
  </property>

  <!-- Web UI 绑定 -->
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>0.0.0.0:19888</value>
  </property>

  <!-- 历史文件目录(HDFS)-->
  <property>
    <name>mapreduce.jobhistory.intermediate-done-dir</name>
    <value>/mr-history/tmp</value>
  </property>

  <property>
    <name>mapreduce.jobhistory.done-dir</name>
    <value>/mr-history/done</value>
  </property>
</configuration>

注意:目录必须提前建好并赋予 mapred 用户写权限,否则 JHS 启动后会报 “permission denied”。(Cloudera Community)


启动与停止命令

Hadoop 2.x(经典脚本)

# 进入 $HADOOP_HOME/sbin
./mr-jobhistory-daemon.sh start historyserver
./mr-jobhistory-daemon.sh stop  historyserver

该脚本会自动读取 $HADOOP_CONF_DIR 下的配置并以 mapred 身份拉起进程,可用 jps 或 netstat -antp | grep 19888 验证进程与端口  (edureka.co, Stack Overflow)。

Hadoop 3.x(新统一命令)

# 任何节点以 mapred 用户执行
$HADOOP_HOME/bin/mapred --daemon start historyserver
$HADOOP_HOME/bin/mapred --daemon stop  historyserver

Hadoop 3.x 弃用了 *-daemon.sh 脚本,官方推荐改用子命令 mapred --daemon (hadoop.apache.org, GitHub)。

小技巧:若集群使用 systemd,可创建 /etc/systemd/system/hadoop-jhs.service,在 ExecStart 里调用同一命令,方便随操作系统启动。(GitHub)


校验 Web 界面

  1. 浏览器访问 http://<主机>:19888

  2. 查看 “Completed Jobs” 表格是否出现最近作业;若页面空白,说明历史文件目录配置或权限异常。(Stack Overflow, edureka.co)

  3. 点击某作业可查看 Map/Reduce 任务时间线、Counters 及 Logs 下载。(docs.cloudera.com)


常见错误与排查

错误日志原因与解决
UnknownHostException核心配置里写了无法解析的主机名;把 <host> 改成 FQDN 或 IP,并在 /etc/hosts 添加解析。(Cloudera Community)
Incomplete HDFS URIHDFS URI 拼写成 hdfs://host:9000:9000/...;端口只能出现一次。修正为 hdfs://host:9000/...
端口 19888 未监听① mapreduce.jobhistory.webapp.address 冲突;② 防火墙未放行;③ 进程因权限/目录问题崩溃,查看 $HADOOP_LOG_DIR/mapred-*.log
页面仅显示失败任务<property name="yarn.log-aggregation-enable">true</property> 未开启或日志目录权限不足,导致 JHS 无法读取成功作业日志。(Stack Overflow)

完整一键脚本(示例)

#!/bin/bash
# historyserver-manager.sh  start|stop|status

CMD=$1
HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

case $CMD in
  start)  sudo -u mapred $HADOOP_HOME/bin/mapred --daemon start historyserver ;;
  stop)   sudo -u mapred $HADOOP_HOME/bin/mapred --daemon stop  historyserver ;;
  status) jps | grep -q HistoryServer && echo "Running" || echo "Stopped" ;;
  *)      echo "Usage: $0 {start|stop|status}" ;;
esac

结语

按照上文配置好 mapred-site.xml、创建历史目录并开放端口后,启动脚本即可拉起 JobHistory Server,随后所有完成的 MapReduce 作业都会出现在 19888 Web 界面;借助 UI 能快速定位慢任务、查看 Counters 与 Shuffle 详情,从而优化作业性能。


参考资料

  1. Edureka 问答:Hadoop 2.x 启动脚本示例(edureka.co)

  2. StackOverflow:mr-jobhistory-daemon.sh --config 参数说明(Stack Overflow)

  3. Hadoop 2.7.1 mapred-default.xml 参数文档(hadoop.apache.org)

  4. Hadoop 3.2.x mapred-default.xml 参数文档(hadoop.apache.org)

  5. Cloudera 社区:JobHistory Server 常见报错分析(Cloudera Community)

  6. HPE Ezmeral 官方示例 mapred-site.xml(docs.ezmeral.hpe.com)

  7. Apache 官方 ClusterSetup(3.1.2)章节,提供新命令(hadoop.apache.org)

  8. Edureka 文章:JobHistory Server WebUI 默认端口说明(edureka.co)

  9. SAS 文档:历史服务参数在 MapR 6.0 中的配置(documentation.sas.com)

  10. Hadoop 3.3.5 ClusterSetup:mapred --daemon 用法(hadoop.apache.org)

  11. Hadoop 3.x MapredCommands 指南(含 hsadmin 管理命令)(hadoop.apache.org)

  12. Cloudera Runtime 7.3 文档:JHS UI 功能介绍(docs.cloudera.com)

  13. Github Issue:-daemon.sh 脚本在 Hadoop 3 中已弃用(GitHub)

  14. 最新 stable 版本 mapred-default.xml(HTTPS UI 端口)(hadoop.apache.org)

  15. Ambari 端口列表文档:10020/19888 定义(o.onslip.net)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值