使用 Spark 事件日志轮替 - Amazon EMR

使用 Spark 事件日志轮替

借助 Amazon EMR 6.3.0 及更高版本,您可以启用 Amazon EMR on EKS 的 Spark 事件日志轮换功能。此功能根据配置的时间间隔轮替文件,并删除最旧的事件日志文件,而不是生成单个事件日志文件。

轮替 Spark 事件日志,以助您避免因长时间运行或串流任务而生成的大型 Spark 事件日志文件出现潜在问题。例如,启动一个长时间运行的 Spark 任务,并且其启用了使用 persistentAppUI 参数的事件日志。Spark 驱动程序会生成一个事件日志文件。如果任务运行数小时或数天,并且 Kubernetes 节点上的磁盘空间有限,则事件日志文件可以占用所有可用磁盘空间。启用 Spark 事件日志轮替功能,可通过将日志文件拆分为多个文件,并删除最旧的文件来解决问题。

注意

此功能只能在 Amazon EMR on EKS 上使用。在 Amazon EC2 上运行的 Amazon EMR 不支持 Spark 事件日志轮换。

要打开 Spark 事件日志轮替功能,请配置以下 Spark 参数:

  • spark.eventLog.rotation.enabled:启用日志轮替功能。默认情况下,Spark 配置文件中会禁用它。将其设置为 true 以启用此功能。

  • spark.eventLog.rotation.interval:指定日志轮替的时间间隔。最小值为 60 秒。默认值为 300 秒。

  • spark.eventLog.rotation.minFileSize:指定轮替日志文件的最小文件大小。默认值最少为 1MB。

  • spark.eventLog.rotation.maxFilesToRetain:指定清理期间要保留的轮替日志文件的数量。有效范围为 1 到 10。默认值是 2。

您可以在 StartJobRun API 的 sparkSubmitParameters 部分制定这些参数,如以下示例所示。

"sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.eventLog.rotation.enabled=true --conf spark.eventLog.rotation.interval=300 --conf spark.eventLog.rotation.minFileSize=1m --conf spark.eventLog.rotation.maxFilesToRetain=2"