EMR クラスターが終了したのはなぜですか?
Amazon EMR クラスターが突然終了しました。
解決方法
Amazon S3 に保存されている Amazon EMR プロビジョニングログを確認する
Amazon EMR クラスターログは、クラスターの起動時に指定された Amazon Simple Storage Service (Amazon S3) バケットに保存されます。ログは、s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/ に保存されています。
**注:**example-log-location、example-cluster-ID、example-EC2-Instance-ID をシステムの名前に置き換えてください。
一般的なエラーのリストを以下に示します。
SHUTDOWN_STEP_FAILED (USER_ERROR)
NO_SLAVES_LEFT (SYSTEM_ERROR)
The master failed: Error occurred: <html>??<head><title>502 Bad Gateway</title></head>??<body>??<center><h1>502 Bad Gateway</h1></center>??<hr><center>nginx/1.16.1</center>??</body>??</html>??
KMS_ISSUE (USER_ERROR)Terminated with errors, The master node was terminated by user.
**注:**以下は最も一般的な終了エラーです。EMR クラスターは、記載されているエラー以外のエラーにより終了する可能性があります。詳細については、「リソースタグ」を参照してください。
SHUTDOWN_STEP_FAILED (USER_ERROR)
EMR クラスターでステップジョブを送信する場合、ActionOnFailure パラメーターでステップ失敗時の動作を指定できます。ActionOnFailure パラメータで [TERMINATE_CLUSTER] または [TERMINATE_JOB_FLOW] を選択すると、EMR クラスターは終了します。詳細については、「StepConfig」 を参照してください。
AWS CloudTrail からのエラーメッセージの例を以下に示します。
{ "severity": "ERROR", "actionOnFailure": "TERMINATE_JOB_FLOW", "stepId": "s-2I0GXXXXXXXX", "name": "Example Step", "clusterId": "j-2YJXXXXXXX", "state": "FAILED", "message": "Step s-2I0GXXXXXXXX (Example Step) in Amazon EMR cluster j-2YJXXXXXXX failed at 202X-1X-0X 0X:XX UTC." }
このエラーを回避するには、ステップジョブを送信するときに ** ActionOnFailure** パラメーターで [CONTINUE] または [CANCEL_AND_WAIT] オプションを使用してください。
NO_SLAVES_LEFT (SYSTEM_ERROR)
このエラーは次の場合に発生します。
- EMR クラスターでは終了保護がオフになっている。
- すべてのコアノードが、YARN サイト構成分類の最大使用率しきい値で指定されたディスクストレージ容量を超えている。デフォルトの最大使用率しきい値は 90% です。
- CORE インスタンスはスポットインスタンスで、スポットインスタンスは TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY です。
スポットインスタンスの終了については、「Amazon EC2 がスポットインスタンスを中断したのはなぜですか?」を参照してください。
NO_SLAVE_LEFT エラーの詳細については、「クラスタが NO_SLAVE_LEFT で終了し、コアノードが FAILED_BY_MASTER」を参照してください。
以下は、インスタンスコントローラーからのエラーメッセージの例です。
202X-0X-0X 1X:5X:5X,968 INFO Poller: InstanceJointStatusMap contains X entries (DD:5 R:3): i-0e336xxxxxxxxxxxx 25d21h R 25d21h ig-22 ip-1x-2xx-xx-1xx.local.xxx.com I: 52s Y:U 98s c: 0 am: 0 H:R 1.1%Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]
このエラーを解決するには
- クラスターの終了保護はオンのままにしてください。詳細については、「終了保護と異常な YARN ノード」を参照してください。
- Amazon EMR のスケーリングポリシー (自動スケーリングとマネージドスケーリング) を使用し、要件に基づいてコアノードをスケーリングします。詳細については、「クラスタースケーリングを使用する」を参照してください。
- クラスターに Amazon Elastic Block Storage (Amazon EBS) の容量をさらに追加してください。詳細については、「終了ステータス: -100 の解決方法」を参照してください。診断: Amazon EMR の「ノードが失われました」というエラーでコンテナがリリースされましたか?
- **MRunHealthyNodes ** Amazon CloudWatch メトリクスのアラームを作成します。このアラームの通知を設定して、45 分間のタイムアウトになる前にノードに障害が発生したことを警告できます。詳細については、「静的しきい値に基づいて CloudWatch アラームを作成する」を参照してください。
502 不正なゲートウェイ
「502 不正なゲートウェイ」エラーは、Amazon EMR の内部システムが一定期間プライマリノードにアクセスできない場合に発生します。終了保護がオフになっている場合、Amazon EMR は終了します。インスタンスコントローラーサービスが停止している場合は、最新のインスタンスコントローラーログとインスタンス状態ログを確認してください。インスタンスコントローラーの標準出力には、メモリが不足しているためにサービスが終了したことが示されています。これは、クラスターのプライマリノードのメモリが不足していることを示しています。
以下は、インスタンス状態ログのエラーメッセージの例です。
# dump instance controller stdout tail -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
前述のエラーを回避するには、より高いインスタンスタイプで EMR クラスターを起動して、クラスターの要件に合わせてより多くのメモリを活用してください。また、実行時間の長いクラスターでメモリが停止しないように、ディスク容量をクリーンアップしてください。詳細については、Amazon EMR の「502 不正なゲートウェイ」または「504 ゲートウェイのタイムアウト」というエラーによるプライマリノード障害のトラブルシューティング方法を教えてください。
KMS_ISSUE (USER_ERROR)
Amazon EMR セキュリティ設定を使用して Amazon EBS ルートデバイスとストレージボリュームを暗号化する場合、ロールには適切な権限が必要です。必要な権限がない場合、KMS_ISSUE エラーが表示されます。
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 (AWS KMS) キーを使用する権限があることを確認してください。
エラーにより終了しました。マスターノードはユーザーによって終了されました
EMR クラスターのプライマリノードが何らかの理由で停止すると、クラスターは「マスターノードはユーザーによって終了されました」というエラーが表示されて終了します。
AWS CloudTrail からのエラーメッセージの例を以下に示します。
eventTime": "2023-01-18T08:07:02Z", "eventSource": "ec2.amazonaws.com", "eventName": "StopInstances", "awsRegion": "us-east-1", "sourceIPAddress": "52.xx.xx.xx", "userAgent": "AWS Internal", "requestParameters": { "instancesSet": { "items": [ { "instanceId": "i-xxf6c5xxxxxxxxxxx" } ] }, "force": false },
EMR プライマリノードまたはすべてのコアノードを停止するとクラスターが終了するため、クラスターノードを停止または再起動しないでください。
関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 3年前