本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用作業重試政策
在 Amazon 6.9.0 版及更新EKS版本EMR中,您可以設定任務執行的重試政策。重試政策會導致作業驅動程式 Pod 在失敗或遭到刪除時自動重新啟動。這讓長時間執行的 Spark 串流作業對故障更具彈性。
設定作業的重試政策
若要設定重試政策,您可以使用 StartJobRun 提供RetryPolicyConfiguration
欄位API。retryPolicyConfiguration
範例如下所示:
aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.9.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py", "entryPointArguments": [ "2" ], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --retry-policy-configuration '{ "maxAttempts": 5 }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'
注意
retryPolicyConfiguration
僅適用於 AWS CLI 1.27.68 之後的版本。若要將 更新 AWS CLI 至最新版本,請參閱安裝或更新最新版本的 AWS CLI
將 maxAttempts
欄位設定為您希望作業驅動程式 Pod 在失敗或遭到刪除時重新啟動的次數上限。兩次作業驅動程式重試嘗試之間的執行間隔為指數重試間隔 (10 秒、20 秒、40 秒...),上限為 6 分鐘,如 Kubernetes
注意
每個額外的任務驅動程序執行都會作為另一個任務執行計費,並受 Amazon EMR EKS定價
重試政策組態值
-
作業的預設重試政策:根據預設,
StartJobRun
包含設定為最多 1 次的重試政策。可以視需要設定重試政策。注意
如果
retryPolicyConfiguration
的maxAttempts
設定為 1,則表示在失敗時不會進行重試來啟動驅動程式 Pod。 -
停用任務的重試政策:若要停用重試政策,請將 中的嘗試次數上限值設定為 retryPolicyConfiguration 1。
"retryPolicyConfiguration": { "maxAttempts": 1 }
-
maxAttempts 為有效範圍內的任務設定:如果
maxAttempts
值超出有效範圍,StartJobRun
呼叫將會失敗。有效maxAttempts
範圍介於 1 到 2,147,483,647 (32 位元整數) 之間,這是 Kubernetes 的backOffLimit
組態設定所支援的範圍。如需詳細資訊,請參閱 Kubernetes 文件的 Pod 退避失敗政策。如果 maxAttempts
值無效,則會傳回下列錯誤訊息:{ "message": "Retry policy configuration's parameter value of maxAttempts is invalid" }
擷取作業的重試政策狀態
您可以使用 ListJobRuns
和 檢視任務的重試嘗試狀態DescribeJobRun
APIs。一旦請求具有已啟用重試政策組態的作業,ListJobRun
和 DescribeJobRun
回應就會在 RetryPolicyExecution
欄位中包含重試政策的狀態。此外,DescribeJobRun
回應將包含在作業的 StartJobRun
請求中輸入的 RetryPolicyConfiguration
。
回應範例
在作業中停用重試政策後,將不會顯示這些欄位,如下面的 重試政策組態值 中所述。
使用重試政策監控作業
當您啟用重試政策時,會為每個建立的任務驅動程式產生 CloudWatch 事件。若要訂閱這些事件,請使用下列命令設定 CloudWatch 事件規則:
aws events put-rule \ --name cwe-test \ --event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'
此事件將傳回作業驅動程式的 newDriverPodName
、newDriverCreatedAt
時間戳記、previousDriverFailureMessage
和 currentAttemptCount
的相關資訊。如果停用重試政策,將不會建立這些事件。
如需如何使用 CloudWatch 事件監控任務的詳細資訊,請參閱 使用 Amazon CloudWatch Events 監控任務。
尋找驅動程式和執行程式的日誌
驅動程式 Pod 名稱遵循 spark-<job
id>-driver-<random-suffix>
格式。相同的 random-suffix
會新增至驅動程式產生的執行程式 Pod 名稱。使用此 random-suffix
時,可尋找驅動程式及其關聯執行程式的日誌。只有在為作業啟用重試政策時,才會顯示 random-suffix
;否則,random-suffix
就不存在。
如需有關如何使用日誌的監控組態來設定作業的詳細資訊,請參閱 執行 Spark 應用程式。