[英]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.