当查看已完成的spark作业的日志时,重定向到容器的日志服务器

rta7y2nd  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(597)

我在Yarn上擦Spark。
我的spark版本是2.1.1,hadoop版本是apachehadoop2.7.3。
当spark作业以集群模式在yarn上运行时,我可以通过stdout/stderr链接查看执行器的日志,如

http://hadoop-slave1:8042/node/containerlogs/container_1500432603585_0148_01_000001/hadoop/stderr?start=-4096

但是当作业完成时,通过stdout/stderr链接查看执行器的日志会得到一个错误页面,如
正在重定向到容器的日志服务器\u 1500432603585 \u 0148 \u 01 \u000001
java.lang.exception:未知容器。容器尚未启动或已完成,或者根本不属于此节点。
然后它会自动重定向到

http://hadoop-slave1:8042/node/hadoop-master:19888/jobhistory/logs/hadoop-slave1:36207/container_1500432603585_0148_01_000001/container_1500432603585_0148_01_000001/hadoop

然后得到另一个错误页面,比如

Sorry, got error 404  
Please consult RFC 2616 for meanings of the error code.  

Error Details

org.apache.hadoop.yarn.webapp.WebAppException: /hadoop-master:19888/jobhistory/logs/hadoop-slave1:50284/container_1500432603585_0145_01_000002/container_1500432603585_0145_01_000002/oryx: controller for hadoop-master:19888 not found
        at org.apache.hadoop.yarn.webapp.Router.resolveDefault(Router.java:232)
        at org.apache.hadoop.yarn.webapp.Router.resolve(Router.java:140)
        at org.apache.hadoop.yarn.webapp.Dispatcher.service(Dispatcher.java:134)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)

实际上,当spark作业完成时,我可以使用此url访问执行者日志:

http://hadoop-master:19888/jobhistory/logs/hadoop-slave1:36207/container_1500432603585_0148_01_000001/container_1500432603585_0148_01_000001/hadoop

它与前面的url有点不同,它删除了头“hadoop-slave1:8042/node/”。
有人知道在spark作业完成时查看spark日志的其他更好的方法吗?
我已经配置了yarn-site.xml

<property>
      <name>yarn.resourcemanager.hostname</name>
      <value>hadoop-master</value>
      <description>The hostname of the RM.</description>
  </property>  

  <property>
      <name>yarn.log-aggregation-enable</name>
      <value>true</value>
  </property>

  <property>
      <name>yarn.log.server.url</name>
      <value>${yarn.resourcemanager.hostname}:19888/jobhistory/logs</value>
  </property>

和mapred-site.xml

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>${yarn.resourcemanager.hostname}:10020</value>
  </property>

  <property>
    <name>mapreduce.jobhistory.admin.address </name>
    <value>${yarn.resourcemanager.hostname}:10033</value>
  </property>

  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>${yarn.resourcemanager.hostname}:19888</value>
  </property>
brtdzjyr

brtdzjyr1#

我遇到这种情况。请通过“Yarnui历史记录”选项卡查看已完成的spark steaming作业日志,但出现以下错误:
尝试构造指向日志服务器的重定向url时失败。日志服务器url可能未配置java.lang.exception:未知容器。容器尚未启动或已完成,或者根本不属于此节点。
解决方案是配置文件yarn-site.xml。添加key.log.server.url:

<property>
<name>yarn.log.server.url</name>        
<value>http://<LOG_SERVER_HOSTNAME>:19888/jobhistory/logs</value>
</property>

然后重新启动yarn cluster以重新加载yarn site.xml。(这一步很重要!)

相关问题