log4j在群集模式下将日志写入哪里?

时间:2019-02-15 11:36:49

标签: apache-spark log4j spark-streaming yarn

目的-将来自流应用程序的自定义日志存储到流应用程序的HDFS或UNIX目录中

我正在集群模式下运行Spark Streaming程序,但是日志没有写入给定的日志路径。检查了HDFS和本地目录。通过log4j调试属性,我可以看到正在运行的文件。我想念什么吗?

-log4j_driver.properties文件
--conf“ spark.driver.extraJavaOptions = -Dlog4j.configuration = log4j_driver.properties -Dlog4j.debug = true”
--conf“ spark.executor。 extraJavaOptions = -Dlog4j.configuration = log4j_driver.properties -Dlog4j.debug = true“

Log4j属性文件

我的Log4j属性文件-

log = / tmp / cc

log4j.rootLogger = INFO,正在滚动
log4j.appender.rolling = org.apache.log4j.RollingFileAppender
log4j.appender.rolling.File = $ {log} /abc.log
log4j.appender.rolling.layout = org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.conversionPattern = [%d]%p%m(%c)%n
log4j.appender.rolling.maxFileSize = 2KB
log4j.appender.rolling.maxBackupIndex = 10
log4j.appender.rolling.encoding = UTF-8
log4j.logger.org.apache.spark = INFO
log4j.appender.rolling.ImmediateFlush = true
log4j.appender.rolling.Threshold =调试
log4j.appender.rolling.Append = true
log4j.logger.org.eclipse.jetty = INFO

集群驱动程序日志

log4j:将文件/tmp/cc/abc.log.2重命名为/tmp/cc/abc.log.3
log4j:将文件/tmp/cc/abc.log.1重命名为/tmp/cc/abc.log.2
log4j:将文件/tmp/cc/abc.log重命名为/tmp/cc/abc.log.1
log4j:setFile称为:/tmp/cc/abc.log,false
log4j:setFile已结束
log4j:滚动计数= 5141
log4j:maxBackupIndex = 10
log4j:将文件/tmp/cc/abc.log.9重命名为/tmp/cc/abc.log.10
log4j:将文件/tmp/cc/abc.log.8重命名为/tmp/cc/abc.log.9
log4j:将文件/tmp/cc/abc.log.7重命名为/tmp/cc/abc.log.8
log4j:将文件/tmp/cc/abc.log.6重命名为/tmp/cc/abc.log.7

我阅读了-我们可以在log4j中指定-$ {spark.yarn.app.container.log.dir} /app.log,但不确定此属性的默认路径是什么,或者不确定是否需要手动设置为好 。当我在客户端模式下运行该应用程序时-日志完美地记录到了本地目录中。

3 个答案:

答案 0 :(得分:0)

在我的纱线集群中,spark stream应用程序的日志写在应用程序容器的节点上。实际上,有一个用于编写属于该应用程序的日志的字典,它由一个名为yarn.log.directory?的字段配置。我不记得确切的名字,所以您可以检查出来。

答案 1 :(得分:0)

在集群模式(--deploy-mode cluster中启动Spark应用程序时,log=/tmp/cc指向/tmp/cc,位于运行驱动程序和执行程序的“容器”根目录下。它们将位于群集中的计算机上。

在您的情况下,您必须找到运行驱动程序和执行程序的计算机并找到目录。

由于在Spark等分布式环境中管理日志非常繁琐,因此Spark支持的集群管理器(即Hadoop YARN,Apache Mesos,Kubernetes)允许从计算机收集日志并通过Web UI或其他方式进行访问。命令行下载。在YARN中为yarn logs -applicationId

答案 2 :(得分:-1)

查找火花日志写入位置的最佳选项是使用Spark UI,并且在群集模式下,驱动程序日志位于群集节点之一中。

Spark UI提供了大量信息。 http://ashkrit.blogspot.com/2018/11/insights-from-spark-ui.html帖子中有一些详细信息。