繁体   English   中英

YARN执行程序日志上的Spark流不可用

[英]Spark streaming on YARN executor's logs not available

我正在运行以下代码

.map{x => 
    Logger.fatal("Hello World")
    x._2
 }

它的火花流应用程序在YARN上运行。 我更新了log4j并提供了spark-submit(使用--files)。 我的Log4j配置已加载,可以从日志中看到并应用于驱动程序的日志(我只能看到我的日志级别,也可以看到我的模式在日志中),但是执行者的日志不可用。 我在日志中找不到“ Hello Word”。 另外,我检查了$ {yarn.nodemanager.log-dirs},它是空的,看起来很奇怪。 我的日志在哪里?

先感谢您

根据Spark官方文档( link ), YARN有两种管理日志的方式:

  • 如果yarn.log-aggregation-enable config日志聚合(使用yarn.log-aggregation-enable config ):

容器日志将从本地计算机(执行程序)中删除,并复制到HDFS目录中。 可以使用yarn logs命令以下列方式从群集上的任何位置查看这些日志:

yarn logs -applicationId <app ID>
  • 如果日志聚合打开:

日志在YARN_APP_LOGS_DIR下的每台计算机上本地维护,通常根据Hadoop版本和安装情况将其配置为/tmp/logs$HADOOP_HOME/logs/userlogs 根据文档,查看容器的日志要求转到包含它们的主机并在此目录中查找。

我找到了解决方案,必须在提交应用程序时以以下方式设置正确的log4j配置:

--files /opt/spark/conf/log4j.properties
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties"
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties"

哪里

spark.driver.extraJavaOptions   -> sets up log configuration for driver
spark.executor.extraJavaOptions -> sets up log configuration for executor(s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM