Hadoop3.3中JobHistoryServer无法通过集群脚本启动问题求助
Hadoop 3.3 JobHistoryServer 启动异常排查方案
一、启动脚本 hdp.sh 逻辑校验
- 确认脚本中启动JobHistoryServer的命令是否使用后台守护进程模式:
mapred --daemon start historyserver,避免前台启动导致脚本执行完成后进程被终止 - 检查脚本是否存在启动后误清理进程的逻辑,比如后续有
pkill、killall等命令,或启动顺序冲突导致进程被连带终止 - 在脚本中为JobHistoryServer启动命令添加日志输出,定位执行细节:
执行脚本后查看该日志,排查启动命令是否执行异常mapred --daemon start historyserver >> /var/log/hdp_jobhistory_start.log 2>&1
二、配置文件一致性检查
- 验证单独启动与脚本启动加载的配置是否一致:单独启动时指定脚本使用的配置目录,执行
mapred --config $HADOOP_CONF_DIR --daemon start historyserver,观察进程是否仍会消失,判断是否为配置差异导致 - 检查
mapreduce-site.xml关键配置:mapreduce.jobhistory.address:确认端口未被占用,格式为[hostname]:[port]mapreduce.jobhistory.done-dir、mapreduce.jobhistory.intermediate-done-dir:确认HDFS路径已创建且当前用户有读写权限,可执行hdfs dfs -ls /path/to/dir验证mapreduce.jobhistory.webapp.address:确保WebUI端口未被其他服务占用
- 检查
yarn-site.xml中yarn.log.server.url配置,需指向正确的JobHistoryServer地址,避免因YARN交互异常导致进程退出
三、进程退出原因定位
- 查看JobHistoryServer日志文件(默认路径
$HADOOP_HOME/logs/mapred-<username>-historyserver-<hostname>.log),重点排查启动后的报错信息,比如权限不足、配置解析失败、依赖缺失等 - 在脚本执行后立即执行
ps -ef | grep historyserver,确认进程是否短暂存在后退出,判断是未启动还是启动后异常终止 - 检查系统资源限制:执行
ulimit -a查看文件描述符、内存等限制,确认是否因资源不足导致进程被系统杀死
四、环境变量差异排查
- 对比单独启动与脚本启动时的环境变量:
- 单独启动时执行
env > standalone_env.txt - 在hdp.sh中JobHistoryServer启动命令前添加
env > script_env.txt - 对比两个文件,重点校验
HADOOP_HOME、HADOOP_CONF_DIR、JAVA_HOME、PATH等关键变量是否一致,避免环境变量差异导致启动失败
- 单独启动时执行
内容的提问来源于stack exchange,提问作者blackfan2
相关产品推荐
相关产品推荐

