上一篇
hadoop开启历史服务器
- 行业动态
- 2025-05-11
- 10
启动Hadoop历史服务器需先确保HDFS和YARN服务运行,执行
start-yarn.sh
启动YARN,再运行 mr-jobhistory-daemon.sh start historyserver
在Hadoop集群中,历史服务器(JobHistory Server)用于存储和管理MapReduce作业的执行历史记录,开启历史服务器可以帮助用户查询已完成作业的详细信息,包括任务执行时间、状态、资源消耗等,以下是开启Hadoop历史服务器的详细步骤及相关配置说明:
前提条件
- Hadoop集群已部署:确保Hadoop的核心组件(NameNode、DataNode、ResourceManager、NodeManager)已正常运行。
- YARN服务已启动:历史服务器依赖YARN的ResourceManager,需确保YARN服务已正确配置并启动。
- 权限配置:历史服务器通常以
hdfs
或yarn
用户运行,需确保相关用户有权限访问HDFS和YARN。
配置历史服务器
修改配置文件
历史服务器的配置主要通过mapred-site.xml
完成,需添加或修改以下参数:
参数 | 默认值 | 说明 |
---|---|---|
mapreduce.jobhistory.address | 0.0.0:10020 | 历史服务器的RPC通信地址(可自定义端口)。 |
mapreduce.jobhistory.webapp.address | 0.0.0:19888 | 历史服务器的Web UI地址(建议与RPC地址一致)。 |
mapreduce.jobhistory.done-dir | /tmp/completed_mapreduce_jobs | 存储已完成作业历史的HDFS目录。 |
mapreduce.jobhistory.retain.hours | 72 | 保留历史记录的时间(小时)。 |
示例配置片段:
<configuration> <property> <name>mapreduce.jobhistory.address</name> <value>historyserver:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>historyserver:19888</value> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/user/hadoop/history/done</value> </property> </configuration>
配置环境变量
确保HADOOP_CONF_DIR
环境变量指向正确的配置文件路径,
export HADOOP_CONF_DIR=/etc/hadoop/conf
启动历史服务器
手动启动
在历史服务器所在的节点上,执行以下命令:
$ HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
- 参数说明:
start
:启动服务。historyserver
:指定角色为历史服务器。
自动启动(推荐)
将历史服务器添加到yarn-env.sh
或hadoop-env.sh
中,使其随YARN一起启动:
export YARN_JOBHISTORY_HEAPSIZE=1024 # 设置JVM堆内存(根据需求调整)
验证历史服务器状态
查看进程:
jps | grep JobHistory
输出应包含
JobHistoryServer
进程。访问Web UI:
打开浏览器访问http://<historyserver>:19888/
,可查看已完成作业的列表及详情。检查日志:
日志文件位于$HADOOP_LOG_DIR/userlogs/
,文件名通常为jobhistory-.log
。
常见问题及解决
端口冲突
- 现象:启动时提示端口已被占用。
- 解决:修改
mapred-site.xml
中的mapreduce.jobhistory.address
和mapreduce.jobhistory.webapp.address
,更换为未被占用的端口。
无法访问Web UI
- 现象:浏览器访问
http://<historyserver>:19888/
失败。 - 解决:
- 检查防火墙是否开放对应端口。
- 确认
mapreduce.jobhistory.webapp.address
配置正确。 - 查看日志中是否有异常报错。
FAQs
Q1:如何更改历史服务器的Web UI端口?
A1:修改mapred-site.xml
中的mapreduce.jobhistory.webapp.address
参数,
<property> <name>mapreduce.jobhistory.webapp.address</name> <value>historyserver:20020</value> </property>
重启历史服务器后,Web UI将监听新端口。
Q2:历史服务器的作业记录保留时间如何调整?
A2:通过修改mapreduce.jobhistory.retain.hours
参数,
<property> <name>mapreduce.jobhistory.retain.hours</name> <value>168</value> <!-保留7天 --> </property>
重启历史服务器后,过期的作业记录将被自动清理。
通过以上步骤,您可以成功开启并配置Hadoop历史服务器,实现对MapReduce作业历史的