是否可以在 spark.eventLog.compress 启用的火花历史服务器中查看日志?

Posted

技术标签:

【中文标题】是否可以在 spark.eventLog.compress 启用的火花历史服务器中查看日志?【英文标题】:Is it possible to view logs in the spark history server with spark.eventLog.compress enabled? 【发布时间】:2020-12-08 22:57:52 【问题描述】:

我想在 EMR 集群中启用 spark.eventLog.compress 以节省日志空间,而不会丢失 spark 历史服务器的功能。我尝试启用配置设置并提交一个基本步骤,但打开历史服务器只显示“未找到已完成的应用程序!”。也没有发现不完整的申请。在 spark.eventLog.compress 设置为 false 的情况下运行相同的集群会显示我期望的应用程序日志。

日志确实在那里并且被压缩

scala> spark.conf.get("spark.history.fs.logDirectory")
res0: String = hdfs:///var/log/spark/apps

scala> :quit
[hadoop@ip-... ~]$ hadoop fs -ls hdfs:///var/log/spark/apps
Found 3 items
-rwxrwx---   1 hadoop spark      24595 2020-12-07 22:26 hdfs:///var/log/spark/apps/application_1607379760026_0001_1.lz4
-rwxrwx---   1 hadoop spark      17878 2020-12-07 22:26 hdfs:///var/log/spark/apps/application_1607379760026_0002.lz4
-rwxrwx---   1 hadoop spark      12190 2020-12-07 22:44 hdfs:///var/log/spark/apps/application_1607379760026_0003.lz4
[hadoop@ip-... ~]$ logout

我还尝试通过关注this answer 来检查来自org.apache.spark.deploy.history.HistoryServer 进程(通过ps aux | grep -i history 找到)的日志

[hadoop@ip-... ~]$ sudo tail -f /proc/25275/fd/1
...
20/12/08 20:46:08 INFO FsHistoryProvider: Parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0002_1.lz4 to re-build UI...
20/12/08 20:46:08 INFO FsHistoryProvider: Finished parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0002_1.lz4
20/12/08 21:01:50 INFO FsHistoryProvider: Parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0003_1.lz4.inprogress for listing data...
20/12/08 21:01:50 INFO FsHistoryProvider: Finished parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0003_1.lz4.inprogress
20/12/08 21:02:00 INFO FsHistoryProvider: Parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0003_1.lz4 for listing data...
20/12/08 21:02:00 INFO FsHistoryProvider: Finished parsing hdfs://ip-...:8020/var/log/spark/apps/application_1607443436753_0003_1.lz4

在我看来,这表明历史服务器应该能够读取它们,但很难说我是否只是错过了一条错误消息或其他什么。 是否可以在启用spark.eventLog.compress 的情况下查看历史服务器中的日志?

【问题讨论】:

你能分享你在 $SPARK_HOME/conf/spark_default.conf 中设置的内容以及你的 spark-submit 命令 【参考方案1】:

spark.eventLog.compress=true - 是的,您可以在 Spark History Server UI 中查看事件日志,但如果您想直接从文件中读取内容,则无法直接读取,因为它已压缩。

spark.eventLog.compress (默认 false) - 是启用 (true) 还是禁用 (false) 事件压缩(使用 CompressionCodec)。

spark.eventLog.compression.codec(默认无)- 用于压缩日志事件的编解码器。默认情况下,Spark 提供四种编解码器:LZ4、LZF、Snappy 和 ZSTD。如果不指定此参数,则使用 spark.io.compression.codec。

【讨论】:

以上是关于是否可以在 spark.eventLog.compress 启用的火花历史服务器中查看日志?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以判断一个对象是否在不同的 AppDomain 中运行?

是否可以使用 JavaScript 确定 GeoJSON 点是否在 GeoJSON 多边形内?

是否可以在 Cocoa 中确定文件是否是从别名打开的?

是否可以检查是否在 iOS 7 中启用了 iCloud KeyChain?

是否可以在接口中实现本机方法?

是否可以在 Swift 2.1 中检查目录是否为空? [复制]