View a markdown version of this page

使用 Spark 事件日誌輪換 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Spark 事件日誌輪換

使用 Amazon EMR 6.3.0 及更高版本,可以為 Amazon EMR on EKS 開啟 Spark 事件日誌輪換功能。此功能不會產生單一事件日誌檔案,而是會根據您設定的時間間隔來輪換檔案,並移除最舊的事件日誌檔案。

輪換 Spark 事件日誌可協助您避免長時間執行或串流作業所產生的大型 Spark 事件日誌檔案可能發生的問題。例如,使用透過 persistentAppUI 參數啟用的事件日誌來開始長時間執行的 Spark 作業。Spark 驅動程式會產生事件日誌檔案。如果作業執行數小時或數天,且 Kubernetes 節點上的磁碟空間有限,則事件日誌檔案可能會耗用所有可用的磁碟空間。開啟 Spark 事件日誌輪換功能可解決此問題,方法是將日誌檔案分割為多個檔案並移除最舊的檔案。

注意

此功能僅適用於 Amazon EMR on EKS。在 Amazon EC2 執行的 Amazon EMR 不支援 Spark 事件日誌輪換。

注意

在 Amazon EMR on EKS 上,以時間為基礎的事件日誌輪換 (本頁所述的spark.eventLog.rotation.*參數) 會根據時間間隔限制 Spark 事件日誌的成長,並且是支援這樣做的機制。Amazon EMR on EKS 上的事件日誌上傳不支援開放原始碼大小型滾動事件日誌 (spark.eventLog.rolling.*)。啟用滾動時,Spark 驅動程式會寫入以大小為基礎的區段檔案。Amazon EMR on EKS 受管日誌運送元件 (上傳事件日誌以便應用程式出現在 Spark 歷史記錄伺服器的代理程式) 不會收集這些檔案。因此,即使任務成功執行,應用程式也不會出現在 Spark 歷史記錄伺服器中。

如果您的事件日誌未出現在 Spark 歷史記錄伺服器中,請檢查spark.eventLog.rolling.enabled是否已設定,並切換到事件日誌輪換,如下節所述。

若要開啟 Spark 事件日誌輪換功能,請設定下列 Spark 參數:

  • spark.eventLog.rotation.enabled‐開啟日誌輪換。依預設,它在 Spark 組態檔案中被停用。設定為 true 可開啟此功能。

  • spark.eventLog.rotation.interval‐指定日誌輪換的時間間隔。最小值為 60 秒。預設值為 300 秒。

  • spark.eventLog.rotation.minFileSize‐指定最小檔案大小以輪換日誌檔案。最小且預設值為 1 MB。

  • 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"

從滾動事件日誌遷移到輪換

如果您目前使用開放原始碼大小型滾動事件日誌,請將spark.eventLog.rolling.*參數取代為輪換參數。輪換會以時間間隔 (檔案大小下限) 為事件日誌加上上限,而不是僅依檔案大小,因此請選擇符合您任務事件速率的間隔和檔案大小下限。切換時移除所有spark.eventLog.rolling.*設定。下表將每個滾動參數映射至其對等旋轉。

滾動參數 (不支援) 輪換參數 (支援)
spark.eventLog.rolling.enabled=true spark.eventLog.rotation.enabled=true
spark.eventLog.rolling.maxFileSize (大小上限) spark.eventLog.rotation.interval (時間上限;最短 60 秒,預設 300 秒),與 spark.eventLog.rotation.minFileSize(最短和預設 1 MB) 搭配使用
spark.eventLog.rolling.maxFilesToRetain spark.eventLog.rotation.maxFilesToRetain (有效範圍 1 到 10,預設 2)