当前位置: 首页 > news >正文

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|statusCMD=$1
HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopcase $CMD instart)  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)

相关文章:

  • 字符串哈希专题
  • 36、C#中的⽅法声明参数关键字params,ref,out的意义及⽤法
  • Vue3响应式原理那些事
  • Python10天冲刺《Pydantic 是一个用于数据验证和设置管理的 Python 库》
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化
  • 常用对称加密算法的Python实现及详解
  • Javascript学习笔记2——基本引用类型
  • PriorityQueue
  • GESP2024年3月认证C++八级( 第二部分判断题(1-5))
  • kdump详解
  • 使用 NGINX 实现 HTTP Basic 认证ngx_http_auth_basic_module 模块
  • python函数复习(形参实参,收集参数,关键字参数)
  • 《OmniMeetProTrack 全维会议链智能追录系统 软件说明书》
  • 【NLP】33. Pinecone + OpenAI :构建自定义语义搜索系统
  • E-R图作业
  • 《人件》第四章 高效团队养成
  • webpack 的工作流程
  • Qt天气预报系统绘制温度曲线
  • 专业课复习笔记 4
  • 基于Python+MongoDB猫眼电影 Top100 数据爬取与存储
  • 从陈毅杯到小应氏杯,五一长假上海掀起围棋热
  • 美国内政部长:今年夏天美国可能发生西班牙式大停电,全怪拜登
  • 科普|“小石头,大麻烦”,出现输尿管结石如何应对?
  • 新势力4月销量出炉:零跑逾4万辆再夺冠,蔚来环比增近六成,小米下滑
  • 国铁集团:5月1日全国铁路预计发送旅客2250万人次
  • 解放日报:“北斗七星”列阵,AI群星闪耀