首页 > 解决方案 > 是否可以在启用 spark.eventLog.compress 的情况下查看 spark 历史服务器中的日志?

问题描述

我想spark.eventLog.compress在 EMR 集群中启用以节省日志空间,而不会丢失 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

我还尝试按照此答案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

标签: amazon-web-servicesapache-sparkhadoopamazon-emr

解决方案


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。


推荐阅读