2016-11-04 14 views
0

我刚刚开始使用的Spark群集中看到了非常奇怪的行为。用于记录Spark日志不会返回给驱动程序,消息只存在于工作人员

正常行为是当一个运行​​人会看到日志消息,像这样:

INFO 2016-11-04 13:14:10,671 org.apache.spark.executor.Executor: Finished task 227.0 in stage 4.0 (TID 3168). 1992 bytes result sent to driver

这些往往填补控制台非常迅速,通过高手,尤其是当应用程序使用了大量的分区。

但是我在运行spark-submit之后没有看到来自Spark的任何常规日志消息。大约5行。相反,所有正常的日志消息都在Spark UI中的驱动程序stdout中。

因此,问题是什么设置和哪里可能告诉Spark不返回这些日志条目回驱动程序?

这非常令人沮丧,因为当日志消息被分割到多个位置时,很难调试应用程序。通常我会在运行spark-submit之后将日志注入到屏幕上,并且了解它在做什么。现在我无法得到这种感觉,因为我必须在事件之后查看日志

+0

堵塞日志收集的单点故障听起来有风险,你不觉得吗? – 2016-11-04 14:07:28

+1

@LostInOverflow我正在尝试调试一个应用程序。 – samthebest

回答

1

因此,挖掘到我使用的jar后,我发现它是用一个奇怪的log4j文件构建的。我不知道这个文件是什么,但有些东西阻止了驱动程序的日志。一旦我重建没有这个log4j文件的jar,日志工作正常!

# Set everything to be logged to the console 
log4j.rootCategory=DEBUG, console 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.target=System.err 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n 

# Settings to quiet third party logs that are too verbose 
log4j.logger.org.spark-project.jetty=WARN 
log4j.logger.org.spark-project.jetty.util.component.AbstractLifeCycle=ERROR 
log4j.logger.org.apache.spark=WARN 
log4j.logger.org.apache.hadoop=INFO 
log4j.logger.io.netty=INFO 
log4j.logger.com.datastax.cassandra=INFO 


# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support 
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL 
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR 
相关问题