為什麼我的 Amazon EMR 叢集會終止?
我的 Amazon EMR 叢集非預期地終止。
解決方法
Amazon EMR 會將叢集日誌儲存在您於叢集啟動時指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中。例如,s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/。
若要確認 Amazon EMR 叢集終止的原因,請檢查儲存在 Amazon S3 的 Amazon EMR 佈建日誌。
「SHUTDOWN_STEP_FAILED (USER_ERROR)」錯誤
當您在 Amazon EMR 叢集中提交步驟作業時,可以在 ActionOnFailure 參數中指定步驟失敗行為。如果為 ActionOnFailure 參數選取 TERMINATE_CLUSTER 或 TERMINATE_JOB_FLOW,則 Amazon EMR 叢集會終止,且您可能會在 AWS CloudTrail 看到以下錯誤訊息:
「{ "severity": "ERROR", "actionOnFailure": "TERMINATE_JOB_FLOW", "stepId": "s-2I0G########", "name": "Example Step", "clusterId": "j-2YJ#######", "state": "FAILED", "message": "Step s-2I0G####### (Example Step) in Amazon EMR cluster j-2YJ####### failed at 202#-1#-0# 0#:## UTC." }」
若要避免此錯誤,請在提交步驟作業時,於 ActionOnFailure 參數中使用 CONTINUE 或 CANCEL_AND_WAIT 選項。
如需更多資訊,請參閱 StepConfig。
「NO_SLAVES_LEFT (SYSTEM_ERROR)」錯誤
當以下條件成立時,您會收到「No_SLAVES_LEFT」錯誤:
- 您已關閉 Amazon EMR 叢集的終止保護。
- 所有核心節點的磁碟容量超過 yarn-site 組態分類中指定的最大使用率閾值。預設的最大使用率閾值為 90%。
- 核心執行個體是 Spot 執行個體,而 Spot 執行個體是 TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY。
如需更多 Spot 執行個體終止的資訊,請參閱為什麼 Amazon EC2 中斷了我的 Spot 執行個體?
若要解決此錯誤,請執行下列操作:
- 保持叢集的終止保護為開啟。如需更多資訊,請參閱終止保護和運作狀態不良的 YARN 節點。
- 使用 Amazon EMR 擴展政策 (自動擴展和受管擴展),根據您的需求擴展核心節點。
- 將更多 Amazon Elastic Block Storage (Amazon EBS) 容量新增至您的叢集。如需更多資訊,請參閱如何解決 Amazon EMR 中的「Exit status: -100.Diagnostics: Container released on a lost node」錯誤?
- 為 MRUnhealthyNodes 指標建立 Amazon CloudWatch 警示。設定此警示的通知,以在 45 分鐘逾時前提醒您有節點運作狀態不良。
「502 Bad Gateway」錯誤
當 Amazon EMR 內部系統在一段時間內無法存取主要節點時,您會收到「502 Bad Gateway」錯誤。如果您關閉終止保護,則 Amazon EMR 會終止叢集。
當 instance-controller 服務停止時,請檢查最新的 instance-controller 日誌和執行個體狀態日誌。如果 instance-controller 標準輸出顯示因記憶體不足而終止服務,表示主要節點的記憶體不足。
以下是執行個體狀態日誌中的錯誤訊息範例:
# dump instance controller stdouttail -n 100 /emr/instance-controller/log/instance-controller.out OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb46c7c8000, 12288, 0) failed; error='Cannot allocate memory' (errno=12) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory. # An error report file with more information is saved as: # /tmp/hs_err_pid16110.log # whats memory usage look like free -m total used free shared buff/cache available Mem: 15661 15346 147 0 167 69 Swap: 0 0 0
若要避免前述錯誤,請啟動具有較大執行個體類型的 Amazon EMR 叢集,以利用更多記憶體來滿足叢集的要求。此外,請清理磁碟空間,以避免長時間執行的叢集中記憶體中斷。如需更多資訊,請參閱如何針對 Amazon EMR 中具有「502 Bad Gateway」或「504 Gateway Time-out」錯誤的主節點失敗進行疑難排解?
「KMS_ISSUE (USER_ERROR)」錯誤
當您使用 Amazon EMR 安全組態加密 Amazon EBS 根裝置和儲存磁碟區時,角色必須具有適當權限。若缺少必要權限,那麼您會在 AWS CloudTrail 中收到以下錯誤訊息:
「The EMR Service Role must have the kms:GenerateDataKey* and kms:ReEncrypt* permission for the KMS key configuration when you enabled EBS encryption by default.You can retrieve that KMS key's ID by using the ec2:GetEbsDefaultKmsKeyId API.」
若要避免上述錯誤,請確保用於加密 Amazon EBS 根裝置和儲存磁碟區的安全組態具有必要權限。同時,確保 Amazon EMR 服務角色 (EMR_DefaultRole_V2) 擁有使用指定 AWS Key Management Service (KMS) 金鑰的權限。
「Terminated with errors, The master node was terminated by user」錯誤
當 Amazon EMR 叢集主要節點因任何原因停止時,叢集會以「The master node was terminated by user」錯誤終止。
您會在 AWS CloudTrail 中收到以下錯誤訊息:
eventTime": "2023-01-18T08:07:02Z", "eventSource": "ec2.amazonaws.com", "eventName": "StopInstances", "awsRegion": "us-east-1", "sourceIPAddress": "52.##.##.##", "userAgent": "AWS Internal", "requestParameters": { "instancesSet": { "items": [ { "instanceId": "i-##f6c5###########" } ] }, "force": false },
由於停止 Amazon EMR 主要節點或所有核心節點會導致叢集終止,請勿停止或重新啟動叢集節點。
**注意:**您的 Amazon EMR 叢集可能因本文未列出的其他原因而終止。如需更多資訊,請參閱 Amazon EMR 叢集操作期間的資源錯誤。
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 1 年前
- 已提問 3 年前
AWS 官方已更新 4 年前