​EMR クラスターが終了したのはなぜですか?

所要時間3分
0

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-locationexample-cluster-IDexample-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% ]

このエラーを解決するには

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 プライマリノードまたはすべてのコアノードを停止するとクラスターが終了するため、クラスターノードを停止または再起動しないでください。


AWS公式
AWS公式更新しました 1年前
コメントはありません