0

用途 - 将自定义日志从流应用程序存储到 HDFS 或 UNIX 目录以用于流应用程序

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

--files 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 属性文件 -

日志=/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=debug
log4j.appender.rolling.Append=true
log4j.logger.org.eclipse。码头=信息

集群驱动程序日志

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 但不确定此属性的默认路径是什么,或者我们是否还需要手动设置。当我在客户端模式下运行此应用程序时 - 日志完美地记录到本地目录。

4

3 回答 3

0

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

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

由于像 Spark 一样在分布式环境中管理日志非常麻烦,Spark 支持的集群管理器(即 Hadoop YARN、Apache Mesos、Kubernetes)允许从机器收集日志并通过 Web UI 或命令行提供去下载。在 YARN 中,它是yarn logs -applicationId

于 2019-02-16T19:50:40.680 回答
0

在我的yarn集群中,spark流应用的日志写在应用容器的节点上。实际上有一个属于应用的日志写字典,它是由一个名为yarn.log.directory?的字段配置的。具体名字我不记得了,你可以查一下。

于 2019-02-15T12:24:42.270 回答
-2

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

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

于 2019-02-15T15:07:49.700 回答