本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
具有寬限期的 EMR Serverless 任務執行取消
在資料處理系統中,突然終止可能會導致資源浪費、不完整的操作和潛在的資料不一致。Amazon EMR Serverless 可讓您在取消任務執行時指定寬限期。此功能允許在任務終止之前適當清除和完成進行中工作的時間。
取消任務執行時,您可以使用 參數指定寬限期 (以秒為單位),shutdownGracePeriodInSeconds
在此期間任務可以在最終終止之前執行清除操作。行為和預設設定因批次和串流任務而異。
批次任務的寬限期
對於批次任務,EMR Serverless 可讓您實作在寬限期內執行的自訂清除操作。您可以在應用程式程式碼中將這些清除操作註冊為 JVM 關機掛鉤的一部分。
預設行為
關機的預設行為是沒有寬限期。它包含下列兩個動作:
立即終止
資源會立即釋出
組態選項
您可以指定導致正常關機的設定:
關閉寬限期的有效範圍:15-1800 秒 (選用)
立即終止 (無任何寬限期):0 秒
啟用正常關機
若要實作批次任務的正常關閉,請遵循下列步驟:
-
在包含自訂關閉邏輯的應用程式程式碼中新增關機掛鉤。
-
在取消任務時指定寬限期,以允許上方新增的勾點有時間執行
範例
# Default (immediate termination) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# With 5-minute grace period aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300
串流任務的寬限期
在 Spark 結構化串流中,其中運算涉及從外部資料來源讀取或寫入,突然關機可能會導致不需要的結果。串流任務處理微批次中的資料,並在中途中斷這些操作可能會導致後續嘗試中重複處理。當先前微批次的最新檢查點未寫入,導致串流任務重新啟動時再次處理相同的資料時,就會發生這種情況。這種重複處理不僅浪費運算資源,還可能影響業務營運,因此避免突然關機至關重要。
EMR Serverless 透過串流查詢接聽程式提供內建的正常關機支援。這可確保在任務終止之前正確完成持續的微批次。服務會自動管理串流應用程式微批次之間的正常關閉,確保目前的微批次完成處理、正確寫入檢查點,而且串流內容會乾淨地終止,而不會在關閉程序期間擷取新資料。
預設行為
預設啟用 120 秒寬限期。
內建串流查詢接聽程式可管理正常關機。
組態選項
關閉寬限期的有效範圍:15-1800 秒 (選用)
立即終止:0 秒
啟用穩定關機
若要為串流任務實作正常關機:
取消任務時,請指定寬限期,讓進行中的微批次有時間完成。
範例
# Default graceful shutdown (120 seconds) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# Custom grace period (e.g. 300 seconds) aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300 # Immediate Termination aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 0
新增自訂關閉掛鉤 (選用)
雖然 EMR Serverless 預設會透過內建串流查詢接聽程式來管理正常關機,但您可以選擇為個別串流查詢實作自訂關機邏輯。EMR Serverless 會註冊其具有優先順序 60 的正常關機接聽程式 (使用 ShutdownHookManager)。由於優先順序較高的掛鉤會先執行,因此您可以註冊優先順序大於 60 的自訂清除操作,以確保它們在 EMR Serverless 的關閉程序開始之前執行。
若要新增自訂掛鉤,請參閱本主題中第一個範例,說明如何在應用程式程式碼中新增關機掛鉤。在這裡,100 是優先順序,大於 60。因此,這類關機掛鉤會先執行。
注意
自訂關閉掛鉤是選用的,而且不需要正常關閉功能,由 EMR Serverless 自動處理。
寬限期費用和批次持續時間
如果使用寬限期的預設值 (120 秒):
如果您的批次持續時間少於 120 秒,您只需支付完成批次所需的實際時間費用。
如果您的批次持續時間超過 120 秒,則會向您收取最長寬限期 (120 秒) 的費用,但查詢可能無法正常關閉,因為它將被強制終止。
若要最佳化成本並確保正常關機:
對於 > 120 秒的批次持續時間:考慮增加寬限期以符合批次持續時間
對於批次持續時間 < 120 秒:不需要調整寬限期,因為您只需支付實際處理時間的費用
考量事項
寬限期行為
寬限期提供註冊的關機掛鉤完成的時間。
即使在寬限期之前,關閉勾點也立即終止任務。
如果清除操作超過寬限期,任務將強制終止。
服務行為
寬限期關閉僅適用於處於 RUNNING 狀態的任務。
CANCELLING 狀態期間的後續取消請求會被忽略。
-
如果 EMR Serverless 因內部服務錯誤而無法啟動寬限期關閉:
服務將重試最多 2 分鐘。
如果重試失敗,任務將強制終止。
帳單
任務會針對使用的運算資源計費,直到任務完全關閉為止,包括在寬限期內採取的任何時間。