本文是大数据系列第 6 篇,配置 JobHistoryServer(JHS)以便查看 MapReduce 任务历史,并开启日志聚合功能。

完整图文版:CSDN 原文 | 掘金

JobHistoryServer 的作用

JHS 记录已完成 MapReduce 任务的详细信息,包括:

  • 任务状态(成功/失败)
  • 资源使用情况(CPU、内存)
  • 各 Task 的执行时间和状态

有了 JHS,不需要任务运行中才能查看,任务完成后随时可以回溯分析。

配置步骤

1. 修改 mapred-site.xml

$HADOOP_HOME/etc/hadoop/mapred-site.xml 中添加:

<configuration>
  <!-- MapReduce 使用 YARN -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <!-- JobHistoryServer RPC 地址 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>h121.wzk.icu:10020</value>
  </property>
  <!-- JobHistoryServer Web UI 地址 -->
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>h121.wzk.icu:19888</value>
  </property>
</configuration>

2. 修改 yarn-site.xml(开启日志聚合)

<configuration>
  <!-- ResourceManager 主机 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>h123.wzk.icu</value>
  </property>
  <!-- Shuffle 服务 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <!-- 开启日志聚合 -->
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <!-- 日志保留 7 天(单位:秒) -->
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

3. 同步配置到所有节点

xsync $HADOOP_HOME/etc/hadoop/

4. 启动 JobHistoryServer

mr-jobhistory-daemon.sh start historyserver

验证进程:

jps
# 应显示 JobHistoryServer

访问 Web UI

启动后访问:http://h121.wzk.icu:19888/jobhistory

在历史界面可以看到已完成的 MapReduce 任务列表,点击任务可查看:

  • Job Summary(资源统计)
  • Map/Reduce Tasks 详情
  • 每个 Task 的日志(需开启日志聚合)

测试验证

重新运行 WordCount 任务:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar \
  wordcount /test/input /wcoutput2

任务完成后,在 JHS Web UI 中即可查看完整执行历史。

下一篇:大数据-07 HDFS 读写原理