当前位置:首页 > 行业动态 > 正文

hadoop启动历史服务器

执行 stop-yarn.sh停止YARN,运行 mr-jobhistory --daemon start historyserver启动历史服务器,通过 jps命令验证进程是否

Hadoop启动历史服务器详细指南

历史服务器的作用与定位

Hadoop历史服务器(HistoryServer)是MapReduce框架的核心组件之一,主要负责收集和展示已完成作业的运行信息,它通过接收JobTracker或ResourceManager传递的作业执行数据,为用户提供可视化的作业监控界面,与JobTracker不同,历史服务器不参与作业调度,仅用于查询历史记录。

启动历史服务器的前提条件

在启动历史服务器前,需确保以下环境准备完成:

检查项 具体要求
Hadoop集群状态 YARN或MapReduce集群已正常运行,至少完成一次成功的作业提交
配置文件完整性 historyserver.propertiesyarn-site.xml等配置文件存在且参数正确
环境变量配置 HADOOP_HOMEJAVA_HOMEHADOOP_CONF_DIR等环境变量已正确设置
数据目录权限 /var/lib/hadoop-yarn(默认)目录具有读写权限
网络连通性 历史服务器所在节点能访问ResourceManager和Timeline Server(若启用)

启动历史服务器的两种方式

Hadoop提供两种启动方式:通过命令行直接启动,或作为守护进程启动。

命令行直接启动

$ HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
  • 参数说明start表示立即启动,stop用于关闭,restart用于重启
  • 输出特征:启动成功后会显示类似JobHistoryServer started的提示,并打印RPC端口号(默认10020)

作为守护进程启动

hadoop启动历史服务器  第1张

$ HADOOP_HOME/sbin/hadoop-daemon.sh start jobtracker 
    --host <hostname> --port <port> --config <conf_dir>
  • 适用场景:需要自定义端口或主机名时使用
  • 典型配置--host 192.168.1.100 --port 10030 --config /etc/hadoop/conf

关键配置文件解析

历史服务器的核心配置集中在historyserver.propertiesyarn-site.xml中:

配置项 默认值 作用描述
mapreduce.jobhistory.address 0.0.0:10020 指定历史服务器的监听地址
mapreduce.jobhistory.done.dir /tmp/hadoop-yarn/staging 存储已完成作业数据的本地目录
mapreduce.jobhistory.intermediate.done.dir /tmp/hadoop-yarn/intermediate 存储中间状态数据的临时目录
mapreduce.jobhistory.max.job.count 无限制 保留的历史作业数量上限(需手动设置)
mapreduce.jobhistory.webapp.address 0.0.0:19888 Web UI的访问地址

高级配置示例

<property>
  <name>mapreduce.jobhistory.address</name>
  <value>192.168.1.10:10030</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>192.168.1.10:19888</value>
</property>

多集群环境下的特殊配置

当需要为多个Hadoop集群部署独立的历史服务器时,需注意:

  1. 修改mapreduce.jobhistory.address为唯一端口
  2. yarn-site.xml中设置不同的yarn.resourcemanager.address
  3. 使用不同数据目录避免数据混淆

启动过程日志分析

启动过程中的关键日志文件:

  • 启动日志$HADOOP_LOG_DIR/userlogs/historyserver-.log
  • 错误日志$HADOOP_LOG_DIR/jobhistory/current/JobHistory.log
  • 典型错误及解决方案
错误代码 原因分析 解决方案
java.net.BindException: Address already in use 端口10020已被占用 修改mapreduce.jobhistory.address端口或终止占用进程
org.apache.hadoop.security.AccessControlException 数据目录权限不足 使用chmod -R 755 /var/lib/hadoop-yarn修正权限
java.io.IOException: No space left on device 存储目录磁盘空间耗尽 清理/tmp/hadoop-yarn目录下过期数据或扩展磁盘空间

历史服务器Web UI功能详解

启动成功后,可通过http://<server>:19888访问Web界面,主要功能模块包括:

功能模块 作用描述
作业列表页 展示所有已完成作业的ID、状态、启动时间、结束时间、运行地图/减少任务数
作业详情页 显示单个作业的完整执行流程,包括各个阶段的时间消耗、资源使用情况
任务尝试记录 记录每个Map/Reduce任务的多次执行尝试(成功/失败/跳过)
资源使用统计 展示作业执行期间的CPU、内存、IO等资源消耗曲线
过滤器功能 支持按作业ID、用户、提交时间等条件筛选历史记录

历史数据清理策略

长期运行的历史服务器会积累大量作业数据,建议配置以下参数:

<property>
  <name>mapreduce.jobhistory.done.dir</name>
  <value>/data/hadoop/history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate.done.dir</name>
  <value>/data/hadoop/history/intermediate</value>
</property>
<property>
  <name>mapreduce.jobhistory.max.job.count</name>
  <value>10000</value> <!-保留最近10000个作业记录 -->
</property>

可编写定时脚本通过hdfs dfs -rm -r定期清理HDFS中的旧数据。

高可用性部署方案

对于7×24小时运行的集群,建议采用以下高可用方案:

  1. 主备模式:部署两台历史服务器,通过负载均衡器切换访问
  2. 数据热备:配置共享存储目录(如NFS),实现数据实时同步
  3. 自动故障转移:使用ZooKeeper监控服务状态,异常时自动启动备用实例

常见问题FAQs

Q1:如何验证历史服务器是否成功启动?
A1:可通过以下方式验证:

  1. 使用jps命令查看是否存在JobHistory进程
  2. 访问Web UI(默认19888端口)查看是否能加载页面
  3. 检查YARN ResourceManager的日志是否包含historyserver连接信息
  4. 执行curl http://<server>:19888/ws/v1/history/mapreduce/jobs查看是否能返回JSON数据

Q2:历史服务器端口10020被防火墙拦截如何处理?
A2:解决方案包括:

  1. 在防火墙规则中开放10020端口(RPC通信)和19888端口(Web UI)
  2. 修改mapreduce.jobhistory.address为未被占用的高端口号(如10030)
  3. 配置反向代理服务器(如Nginx)转发请求到历史服务器
  4. 检查云服务商安全组规则
0