分享

Spark 运行日志问题求助(关于控制台和stderr)

bingoogle 发表于 2016-12-20 08:27:21 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 5 23100
首先说明,这个问题在Yarn模式和standalone下都出现了,Spark版本1.6.3

我采用的是默认的日志配置,也就是:
QQ截图20161219170113.png

但是我发现输出到控制台的信息,和stderr中保存的信息有一些一致(stdout没有输出),但是很多都不一致:
一致的部分:
控制台信息:

console same

console same

stderr内容:

stderr same

stderr same

不一致的部分(举例,这只是一部分):
控制台信息:

console diff

console diff

stderr内容:

stderr diff

stderr diff

我觉得既然log4j.properties中已经配置了log4j.appender.console.target=System.err,那应该所有控制台输出的信息都会保存到stderr中,
为什么会出现不一致的现象?有没有办法让所有在控制台输出的信息全部保存在stderr中?

于是我修改了源代码,做了些测试。我在SparkContext.scala文件的textFile函数中加入了新的打印日志的代码,各种级别都添加了,如下图所示:

textFile

textFile

但是运行后,我发现这几段代码打印的信息只出现在控制台上:

console textFile

console textFile

并没有出现在stderr文件中。
因为我想调试spark,所以需要经常添加日志打印代码。现在向各位大神求助,希望知道出现不一致现象的原因,以及如何解决,多谢多谢~~~

已有(5)人评论

跳转到指定楼层
nextuser 发表于 2016-12-20 09:09:39
两种可能:
第一种可能相信楼主已经猜到了,就是源码造成的。
源码中,可能有的不是log4j,而是直接输出。所以会造成控制台和日志文件不一致。
第二种
就是楼主的修改的源码可能位置不对或则没有生效调用到或则说调用的其它函数。可能处于底层。

从上面楼主的描述来看,修改源码是有效果的。所以根本原因,还是源码造成的。有些地方可能是log4j控制不到的。
回复

使用道具 举报

bingoogle 发表于 2016-12-20 09:56:00
nextuser 发表于 2016-12-20 09:09
两种可能:
第一种可能相信楼主已经猜到了,就是源码造成的。
源码中,可能有的不是log4j,而是直接输出 ...

为什么有些地方log4j控制不了?而且,即使在同一个package下的两个.scala文件,一个的loginfo只在stderr输出,另一个的loginfo只输出在控制台

回复

使用道具 举报

nextuser 发表于 2016-12-20 15:21:39
bingoogle 发表于 2016-12-20 09:56
为什么有些地方log4j控制不了?而且,即使在同一个package下的两个.scala文件,一个的loginfo只在stderr ...



system.out.println()

logger.info("This is info message.");  
源码中可能存在上面两种情况。
只是举例,也就是说输出方式是多种的。
回复

使用道具 举报

bingoogle 发表于 2016-12-22 10:17:33
nextuser 发表于 2016-12-20 15:21
system.out.println()

logger.info("This is info message.");  

即使同样是使用println来记录log,不同的位置代码也会输出在不同位置。不过我已经知道原因了。
回复

使用道具 举报

bingoogle 发表于 2016-12-22 10:18:45
研究了会,终于知道原因了。
控制台输出的是driver的内容,包括构造DAG,提交作业,调度,分发tasks等等,因为代码执行经过textFile(), map(), flatMap()这些函数的时候都是在构造DAG,所以会在控制台中输出,而且driver本身没有stderr和stdout文件,所以只能在控制台输出。
每个executor自身的log都会输出到stderr中,所以当task运行后,RDD中compute()函数的log会记录在stderr中。
anyway,这个log system可以改进下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条