

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Spark 事件日志轮替
<a name="emr-eks-log-rotation"></a>

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

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

**注意**  
此功能只能在 Amazon EMR on EKS 上使用。在亚马逊上运行的亚马逊 EMR EC2 不支持 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`](emr-eks-jobs-submit.md) 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"
```