【问题标题】:Redirecting to log server for container when view logs of a completed spark jobs run on yarn查看在纱线上运行的已完成 Spark 作业的日志时重定向到容器的日志服务器
【发布时间】:2018-01-18 01:42:59
【问题描述】:

我在纱线上运行火花。

我的 spark 版本是 2.1.1,hadoop 版本是 apache hadoop 2.7.3。

当一个 spark 作业在集群模式下运行在 yarn 上时,我可以通过 stdout/stderr 链接查看 Executor 的日志,例如

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

但是当作业完成后,通过 stdout/stderr 链接查看 Executor 的日志会得到一个错误页面,如

为 container_1500432603585_0148_01_000001 重定向到日志服务器

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)

其实我可以使用这个 url 访问 Executor 的日志 火花作业完成:

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

和之前的url有点不同,去掉了head“hadoop-slave1:8042/node/”。

有谁知道在火花作业完成时查看火花日志的另一种更好的方法?

我已经配置了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>

【问题讨论】:

  • 您可以使用yarn logs -applicationId application_id查看应用程序完整日志。
  • 我需要从 yarn web ui 查看日志。可能有人没有执行“yarn logs”命令的权限。

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

我遇到过这种情况。通过 YARN UI History 选项卡查看已完成的 Spark Steaming 作业日志,但出现以下错误:

尝试构建到日志服务器的重定向 url 失败。日志服务器 url 可能未配置 java.lang.Exception:未知容器。容器要么没有启动,要么已经完成,要么根本不属于这个节点。

解决方法是配置yarn-site.xml文件。添加密钥 yarn.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。(这一步很重要!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多