我在纱线上运行火花。
我的火花versoin是2.1.1,hadoop版本是apache hadoop 2.7.3。
当 Spark 作业在集群模式下在 yarn 上运行时,我可以通过 stdout/stderr 链接查看执行器的日志,例如 stdout/stderr 链接
http://hadoop-slave1:8042/node/containerlogs/container_1500432603585_0148_01_000001/hadoop/stderr?start=-4096
但是当作业完成时,通过 stdout/stderr 链接查看执行者的日志会得到一个错误页面,例如
重定向到日志服务器以进行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访问执行者的日志,当 火花作业已完成:
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/"。
有谁知道另一种更好的方法在火花作业完成时查看火花日志?
我已经配置了纱线站点.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>
和地图网站.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 UI历史记录选项卡查看已完成的火花蒸汽作业日志,但收到以下错误:
尝试构造到日志服务器的重定向 URL 时失败。可能未配置日志服务器 URL java.lang.Exception:未知容器。容器尚未启动或已完成,或者根本不属于此节点。
解决方案是配置文件 yarn-site.xml。添加密钥纱线.log.server.url:
<property>
<name>yarn.log.server.url</name>
<value>http://<LOG_SERVER_HOSTNAME>:19888/jobhistory/logs</value>
</property>
然后重新启动纱线簇以重新加载纱线站点.xml。(这一步很重要!