spark⼊门(四)⽇志配置
1 背景
在测试spark计算时,将作业提交到yarn(模式–master yarn-cluster)上,想查看print到控制台这是很难的,因为作业是提交到yarn的集上,所以,去yarn集上看⽇志是很⿇烦的,但是⼜需要看print的信息,⽅便调试或者别的⽬的。
Spark⽇志确切的存放路径和部署模式相关,如果是YARN模式,最简单地收集⽇志的⽅式是使⽤YARN的⽇志收集⼯具(yarn logs -applicationId ),这个⼯具可以收集你应⽤程序相关的运⾏⽇志,但是这个⼯具是有限制的:应⽤程序必须运⾏完,因为YARN必须⾸先聚合这些⽇志;⽽且你必须开启⽇志聚合功能(yarn.log-aggregation-enable,在默认情况下,这个参数是false)。
2 ⽇志配置
如果你运⾏在YARN模式,你可以在ResourceManager节点的WEB UI页⾯选择相关的应⽤程序,在页⾯点击表格中Tracking UI列的ApplicationMaster,这时候你可以进⼊到Spark作业监控的WEB UI界⾯,这个页⾯就是你Spark应⽤程序的proxy界⾯,⽐如host:port/proxy/application_1430820074800_0322,当然你也可以通过访问Driver所在节点开启的4040端⼝,同样可以看到这个界⾯。
到这个界⾯之后,可以点击Executors菜单,这时候你可以进⼊到Spark程序的Executors界⾯,⾥⾯列出所有Executor信息,以表格的形式展⽰,在表格中有Logs这列,⾥⾯就是你Spark应⽤程序运⾏的⽇志。如果你在程序中使⽤了println(....)输出语句,这些信息会在stdout⽂件⾥⾯显⽰;其余的Spark运⾏⽇志会在stderr⽂件⾥⾯显⽰。
在默认情况下,Spark应⽤程序的⽇志级别是INFO的,我们可以⾃定义Spark应⽤程序的⽇志输出级别,可以
到$SPARK_HOME/conf/log4j.properties⽂件⾥⾯进⾏修改,⽐如:
logger=WARN,console
Logger=${logger}
3 sole=org.apache.log4j.ConsoleAppender
log4j2 appender
4 sole.
5 sole.layout=org.apache.log4j.PatternLayout
6 sole.layout.ConversionPattern=%d (%t) [%p - %l] %m%n
这样Spark应⽤程序在运⾏的时候会打出WARN级别的⽇志,然后在提交Spark应⽤程序的时候使⽤--files参数指定上⾯的log4j.properties⽂件路径即可使⽤这个配置打印应⽤程序的⽇志。
以上是如何配置,如果希望⼀⽅⾯把代码中的println打印到控制台,另⼀⽅⾯⼜保留spark 本⾝输出的⽇志,可以将它输出到⽇志⽂件中。
sole=org.apache.log4j.ConsoleAppender
sole.
sole.layout=org.apache.log4j.PatternLayout
sole.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Settings to quiet third party logs that are too verbose
lipse.jetty=WARN
lipse.jetty.utilponent.AbstractLifeCycle=ERROR
pl.SparkIMain$exprTyper=INFO
pl.SparkILoop$SparkILoopInterpreter=INFO
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.file=/home/hadoop/spark.log
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n
# spark
apache.spark=INFO

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。