更新时间:2022-09-30 GMT+08:00

配置eventlog日志回滚

配置场景

当Spark开启事件日志模式,即设置“spark.eventLog.enabled”“true”时,就会往配置的一个日志文件中写事件,记录程序的运行过程。当程序运行很久,job很多,task很多时就会造成日志文件很大,如JDBCServer、Spark Streaming程序。

而日志回滚功能是指在写事件日志时,将元数据事件(EnviromentUpdate,BlockManagerAdded,BlockManagerRemoved,UnpersistRDD,ExecutorAdded,ExecutorRemoved,MetricsUpdate,ApplicationStart,ApplicationEnd,LogStart)写入日志文件中,Job事件(StageSubmitted, StageCompleted, TaskResubmit, TaskStart,TaskEnd, TaskGettingResult, JobStart,JobEnd)按文件的大小进行决定是否写入新的日志文件。对于Spark SQL的应用,Job事件还包含ExecutionStart、ExecutionEnd。

Spark中有个HistoryServer服务,其UI页面就是通过读取解析这些日志文件获得的。在启动HistoryServer进程时,内存大小就已经定了。因此当日志文件很大时,加载解析这些文件就可能会造成内存不足,driver gc等问题。

所以为了在小内存模式下能加载较大日志文件,需要对大应用开启日志滚动功能。一般情况下,长时间运行的应用建议打开该功能。

配置参数

登录FusionInsight Manager系统,选择“集群 > 服务 > Spark2x > 配置”,单击“全部配置”,搜索以下参数。

参数

说明

默认值

spark.eventLog.rolling.enabled

是否启用滚动event log文件。如果设置为true,则会将每个event log文件缩减到配置的大小。

true

spark.eventLog.rolling.maxFileSize

当spark.eventlog.rolling.enabled=true时,指定要滚动的event log文件的最大大小。

128M

spark.eventLog.compression.codec

用于压缩事件日志的编码解码器。默认情况下,spark提供四种编码解码器:lz4、lzf、snappy和zstd。如果没有给出,将使用spark.io.compression.codec。

spark.eventLog.logStageExecutorMetrics

是否将executor metrics的每个stage峰值(针对每个executor)写入event log。

false