配置Spark 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 |