Hadoop JobHistory 仅显示失败的作业

Posted

技术标签:

【中文标题】Hadoop JobHistory 仅显示失败的作业【英文标题】:Hadoop JobHistory shows only the failed jobs 【发布时间】:2017-09-19 08:28:47 【问题描述】:

我正在尝试监控示例 MapReduce 应用程序的作业,称为 The Definitive Hadoop book 中的 Find Maximum Temperature。在 Hadoop-2.6 的默认安装和配置中,该应用程序运行良好,即它计算年度最高温度。但是在我像这样扩展了mapred-site.xml和yarn-site.xml的配置之后:(取自How do I view my Hadoop job history and logs using CDH4 and Yarn?和YARN job history not coming)

mapred-site.xml:

<property>
  <name> mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property> 
  <name>mapreduce.jobhistory.address</name>
  <value>localhost:10020</value> 
</property>
<property> 
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>localhost:19888</value> 
</property>

yarn-site.xml:

  <property>
      <name>yarn.log-aggregation-enable</name>
      <value>true</value>
  </property>
  <property>
     <name>yarn.nodemanager.remote-app-log-dir</name>
     <value>/app-logs</value>
  </property>
  <property>
      <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
      <value>logs</value>
  </property>

当我运行相同的 MaxTemperature 应用程序时,该应用程序运行良好并输出名为 part-r-00000 的文件,但在 localhost:19888 的 JobHistory 页面上看不到它。 (同时 localhost:8042、localhpst:8088 和 localhost:50070 的其他页面工作正常)

有没有一种方法可以让我看到所有作业,因为它们在任何 Hadoop 页面上运行?

有时当我运行相同的应用程序时,它会出现以下错误:

17/09/19 11:07:49 信息 mapreduce.Job:任务 ID: 尝试_1505767853223_0003_m_000005_1,状态:容器失败 container_1505767853223_0003_01_000013 的启动失败: org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: auxService:mapreduce_shuffle 不存在于 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:422) 在 org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:168) 在 org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106) 在 org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:155) 在 org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:369) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

如果它给出了这个错误,它会显示在 JobHistory 页面上。我不知道为什么它有时会失败,但它发生在重新启动 Hadoop 之后:start-dfs.shstart-yarn.sh/ usr/local/hadoop-2.6.0/sbin/mr-jobhistory-daemon.sh 启动historyserver 这是 3 个作业失败后的 SS:

【问题讨论】:

【参考方案1】:

谷歌搜索 org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist 返回了这个 SO 帖子 org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist

将这些行添加到 yarn-site.xml 的配置中:

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

解决了这个问题。现在所有作业,无论是失败还是成功,都会出现在 JobHistory 页面上。这是一个 SS:

【讨论】:

以上是关于Hadoop JobHistory 仅显示失败的作业的主要内容,如果未能解决你的问题,请参考以下文章

hadoop历史服务的启动与停止

Hadoop2.0之开启日志

Hadoop的奇技淫巧

hadoop2.6.0实践:控制台入口url列表

Hadoop pig连接错误 - historyserver无法启动

为啥 JPS 显示没有进程正在运行?