実行中のクラスターのインスタンスグループの再設定 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

実行中のクラスターのインスタンスグループの再設定

Amazon EMR バージョン 5.21.0 以降では、実行中のクラスター内のインスタンスグループごとに、クラスターアプリケーションを再設定して、追加の設定分類を指定できます。これを行うには、Amazon EMR コンソール、[EMR] を使用します。AWS Command Line Interface(AWS CLI)、またはAWSSDK。インスタンスグループのアプリケーション設定を更新すると、Amazon EMR は新しい設定と既存の設定をマージして、新しいアクティブな設定を作成します。

インスタンスグループの再設定リクエストを送信後、Amazon EMR は新しい設定仕様にバージョン番号を割り当てます。CloudWatch イベントを表示して、設定のバージョン番号またはインスタンスグループの状態を追跡することができます。詳細については、「CloudWatch イベントのモニタリング」を参照してください。

注記

上書きできるのは、クラスターの作成時に指定したクラスター設定のみです。削除はできません。既存の設定と指定したファイルに相違がある場合、Amazon EMR は、SSH を使用してクラスターに接続している間に変更した設定など、手動で変更された設定を、指定したインスタンスグループのクラスターのデフォルトにリセットします。

インスタンスグループを再設定する際の考慮事項

再設定アクション

Amazon EMR コンソールを使用して再設定リクエストを送信すると、AWS Command Line Interface(AWS CLI)、またはAWSSDK では、Amazon EMR は既存のオンクラスター設定ファイルをチェックします。既存の設定と指定したファイルに相違がある場合、Amazon EMR は再設定アクションを開始し、一部のアプリケーションを再起動し、手動で変更された設定(SSH を使用してクラスターに接続している間に変更した設定など)をクラスターのデフォルトを設定します。

注記

Amazon EMR は、インスタンスグループを再設定するたびに、いくつかのデフォルトのアクションを実行します。これらの既定のアクションは、ユーザーが行ったクラスターのカスタマイズと競合し、再構成が失敗する可能性があります。再設定エラーのトラブルシューティング方法については、「」を参照してください。インスタンスグループの再設定のトラブルシューティング

Amazon EMR は、リクエストで指定した設定分類に対する再設定アクションも開始します。これらのアクションの完全なリストについては、使用している Amazon EMR のバージョンの「設定の分類」セクションを参照してください。例:6.2.0 設定分類

注記

Amazon EMR リリースガイドには、Amazon EMR バージョン 5.32.0 および 6.2.0 以降の再設定アクションのみが記載されています。

サービスの停止

Amazon EMR は、ローリングプロセスに従って、タスクとコアのインスタンスグループのインスタンスを再設定します。インスタンスグループ内のインスタンスのうち、一度に変更および再起動されるのはわずか 10% です。このプロセスは完了するまでに時間がかかりますが、実行中のクラスターでアプリケーションが失敗する可能性は低くなります。

YARN の再起動中に YARN ジョブを実行するには、複数のマスターノードを持つ Amazon EMR クラスターを作成するか、yarn.resourcemanager.recovery.enabledtrueあなたのyarn-site設定分類。複数のマスターノードの使用方法の詳細については、「」を参照してください。高可用性 YARN ResourceManager

アプリケーションの検証

Amazon EMR は、再設定再起動プロセスの後に、クラスター上の各アプリケーションが実行中であることを確認します。使用できない場合、再設定オペレーション全体は失敗します。再設定オペレーションに失敗した場合、Amazon EMR は設定パラメータを以前の作業バージョンに戻します。

注記

再構成の失敗を避けるため、使用する予定のクラスターにのみアプリケーションをインストールすることをお勧めします。また、再構成要求を送信する前に、すべてのクラスターアプリケーションが正常で実行されていることを確認することをお勧めします。

制約事項

実行中のクラスターでインスタンスグループを再設定する場合は、次の制限を考慮してください。

  • 特に、アプリケーションが正しく構成されていないと、再起動中に非 Yarn アプリケーションが失敗したり、クラスターの問題を引き起こしたりすることがあります。最大メモリおよび CPU 使用率に近づいているクラスターは、再起動プロセスの後に問題が発生する可能性があります。これは特に、マスターインスタンスグループに当てはまります。

  • インスタンスグループのサイズ変更中は、再設定リクエストを送信できません。インスタンスグループのサイズ変更中に再設定を開始した場合、インスタンスグループのサイズ変更が完了するまで再設定を開始することはできません。再設定中にサイズ変更を行う場合も同様です。

  • インスタンスグループを再設定後、Amazon EMR は、新しい設定を有効にするためにアプリケーションを再起動します。再設定中にアプリケーションが使用されていると、ジョブが失敗したり、アプリケーションで予期しない動作が発生したりする可能性があります。

  • インスタンスグループの再設定に失敗した場合、Amazon EMR は設定パラメータを以前の作業バージョンに戻します。バージョンを戻せなかった場合は、新しい ModifyInstanceGroup リクエストを送信して、インスタンスグループを SUSPENDED 状態から復旧させる必要があります。

  • Phoenix の設定分類の再設定リクエストは、Amazon EMR バージョン 5.23.0 a 以降でのみサポートされており、Amazon EMR バージョン 5.21.0 または 5.22.0 ではサポートされていません。

  • HBase 設定分類の再設定リクエストは、Amazon EMR バージョン 5.30.0 以降でのみサポートされており、Amazon EMR バージョン 5.23.0 ~ 5.29.0 ではサポートされていません。

  • Amazon EMR は、Amazon EMR バージョン 5.27.0 以降の EMR クラスターでのみ、アプリケーション再設定リクエストをサポートします。

  • RECOVERhdfs-encryption-zones分類または Hadoop KMS 設定分類は、複数のマスターノードを持つ EMR クラスターではサポートされていません。

  • Amazon EMR は、現在 YARN ResourceManager の再起動を必要とする容量スケジューラーの特定の再設定リクエストをサポートしていません。たとえば、キューを完全に削除することはできません。

コンソールでインスタンスグループを再設定する

  1. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/) を開きます。

  2. クラスタリストの名前で、再設定するアクティブクラスターを選択します。

  3. クラスターのクラスター詳細ページを開き、[設定タブ。

  4. [フィルタ] ドロップダウンリストで、再設定するインスタンスグループを選択します。

  5. RECOVERドロップダウンメニューから [] を選択します。テーブル内で編集またはJSON ファイルでの編集

    • テーブル内で編集: 設定分類テーブルで、既存の設定のプロパティおよび値を編集するか、[設定を追加するをクリックして、追加の構成分類を指定します。

    • JSON ファイルでの編集-JSON に直接設定を入力するか、短縮構文を使用します (シャドウテキストで示されています)。それ以外の場合は、ファイルの Amazon S3 URI を JSON のファイルに入力します。Configurationsオブジェクト。

    注記

    -送信元列は、クラスターの作成時、またはこのインスタンスグループの追加設定の指定時に、設定を指定したかどうかを示しています。インスタンスグループの設定は、両方のソースから編集することができます。最初のクラスター設定を削除することはできませんが、インスタンスグループの設定は上書きすることができます。

    また、ネストされた設定分類は、テーブルで直接追加または編集することもできます。たとえば、export の追加の hadoop-env サブ分類を指定するには、テーブルで hadoop.export 設定分類を追加します。次に、この分類の特定のプロパティおよび値を指定します。

  6. (オプション) [Apply this configuration to all active instance groups (この設定をすべてのアクティブインスタンスグループに適用する)] を選択します。

  7. 変更を保存します。

CLI を使用してインスタンスグループを再設定する

の使用modify-instance-groups実行中のクラスターのインスタンスグループの新しい設定を指定するには、コマンドを使用します。

注記

以下の例では、<j-2AL4XXXXXX5T9>をクラスター ID に置き換え、<ig-1xxxxxxx9>インスタンスグループ ID に置き換えます。

例 — インスタンスグループの設定を置き換える

次の例は、設定の JSON ファイルをinstanceGroups.jsonインスタンスグループの YARN NodeManager ディスクヘルスチェッカーのプロパティを編集します。

  1. 構成分類を準備し、instanceGroups.jsonコマンドを実行する同じディレクトリで。

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" }, "Configurations":[] } ] } ]
  2. 次のコマンドを実行します。

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json

例 — インスタンスグループに設定を追加する

設定をインスタンスグループに追加する場合は、そのインスタンスグループに対して以前に指定した設定をすべて新しいModifyInstanceGroupリクエスト. それ以外の場合は、以前に指定した設定は削除されます。

次の例では、YARN NodeManager 仮想メモリチェッカーのプロパティを追加します。設定には、YARN NodeManager ディスクヘルスチェッカーに対して以前に指定した値も含まれ、値が上書きされることはありません。

  1. 以下の内容でinstanceGroups.jsonコマンドを実行する同じディレクトリに保存します。

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0", "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
  2. 次のコマンドを実行します。

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json

例 — インスタンスグループの設定を削除する

インスタンスグループの設定を削除するには、以前の設定を除外する新しい再設定リクエストを送信します。

注記

最初の上書きのみ行うことができますクラスターの設定 この設定を削除することはできません。

たとえば、前の例から YARN NodeManager ディスクヘルスチェッカーの設定を削除するには、新しいinstanceGroups.json以下の内容で。

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
注記

最後の再設定リクエストに含まれる設定をすべて削除するには、空の設定の配列を指定して再設定リクエストを送信します。たとえば、

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[] } ]

例 — 1 つのリクエストで、インスタンスグループを再設定してサイズを変更する

次の JSON の例は、同じリクエストでインスタンスグループを再設定およびサイズ変更を行う方法を示しています。

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "InstanceCount":5, "EC2InstanceIdsToTerminate":["i-123"], "ForceShutdown":true, "ShrinkPolicy":{ "DecommissionTimeout":10, "InstanceResizePolicy":{ "InstancesToTerminate":["i-123"], "InstancesToProtect":["i-345"], "InstanceTerminationTimeout":20 } }, "Configurations":[ { "Classification":"yarn-site", "Configurations":[], "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" } } ] } ]

Java SDK を使用してインスタンスグループを再設定する

注記

以下の例では、<j-2AL4XXXXXX5T9>をクラスター ID に置き換え、<ig-1xxxxxxx9>インスタンスグループ ID に置き換えます。

次のコードスニペットは、インスタンスグループの新しい設定を示します。AWS SDK for Java。

AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration configuration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withConfigurations(configuration); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

次のコードスニペットは、空の設定の配列を指定して、インスタンスグループに対して以前に指定した設定を削除します。

List<Configuration> configurations = new ArrayList<Configuration>(); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withConfigurations(configurations); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

インスタンスグループの再設定のトラブルシューティング

インスタンスグループの再設定プロセスが失敗した場合、Amazon EMR は再設定を元に戻し、Amazon CloudWatch イベントを使用して失敗メッセージをログに記録します。このイベントは、再設定失敗の概要を示しています。再構成が失敗したインスタンスと、対応する失敗メッセージが一覧表示されます。失敗メッセージの例を次に示します。

The reconfiguration operation for instance group ig-1xxxxxxx9 in Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) failed at 2021-01-01 00:00 UTC and took 2 minutes to fail. Failed configuration version is example12345. Failure message: Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message".

再構成の失敗に関するより多くのデータを収集するには、ノードのプロビジョニングログをチェックします。この設定は、次のようなメッセージを受信する場合に特に便利です。

i-xxxxxxx1 failed with message “Unable to complete transaction and some changes were applied.”
On the node

ノードに接続してノードのプロビジョニングログにアクセスするには

  1. SSH を使用して、再設定に失敗したノードに接続します。手順については、以下を参照してください。Linux インスタンスへの接続()Amazon EC2 Linux インスタンス用ユーザーガイド

  2. ノードプロビジョニングログファイルを含む次のディレクトリに移動します。

    /mnt/var/log/provision-node/
  3. を開くreportsサブディレクトリに移動し、再構成のノードプロビジョニングレポートを検索します。-reportsディレクトリは、再設定バージョン番号、汎用一意識別子(UUID)、Amazon EC2 インスタンスの IP アドレス、およびタイムスタンプによってログを整理します。各レポートは、再構成プロセスに関する詳細情報を含む圧縮された YAML ファイルです。

    レポートのファイル名とパスの例は次のとおりです。

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  4. あなたは、次のようなファイルビューアを使用してレポートを調べることができますzless、以下の例のようになっています。

    zless 202104061715.yaml.gz
Amazon S3

Amazon S3 を使用してノードプロビジョニングログにアクセスするには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. ログファイルをアーカイブするようにクラスターを設定したときに指定した Amazon S3 バケットを開きます。

  3. ノードプロビジョニングログファイルを含む次のフォルダーに移動します。

    DOC-EXAMPLE-BUCKET/elasticmapreduce/<cluster id>/node/<instance id>/provision-node/
  4. を開くreportsフォルダーをクリックし、再構成のノードプロビジョニングレポートを検索します。-reportsフォルダは、再設定バージョン番号、汎用一意識別子(UUID)、Amazon EC2 インスタンスの IP アドレス、およびタイムスタンプによってログを整理します。各レポートは、再構成プロセスに関する詳細情報を含む圧縮された YAML ファイルです。

    レポートのファイル名とパスの例は次のとおりです。

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  5. ログファイルを表示するには、Amazon S3 からローカルマシンにテキストファイルとしてダウンロードします。手順については、以下を参照してください。オブジェクトのダウンロード

各ログファイルには、関連する再構成の詳細なプロビジョニングレポートが含まれています。エラーメッセージ情報を検索するには、errレポートのログレベル。レポートの形式は、クラスターの Amazon EMR のバージョンによって異なります。

次の例は、5.32.0 および 6.2.0 より前の Amazon EMR リリースバージョンのエラー情報を示しています。

- !ruby/object:Puppet::Util::Log level: !ruby/sym err tags: - err message: "Example detailed error message." source: Puppet time: 2021-01-01 00:00:00.000000 +00:00

Amazon EMR リリースバージョン 5.32.0 および 6.2.0 以降では、代わりに次の形式が使用されます。

- level: err message: 'Example detailed error message.' source: Puppet tags: - err time: '2021-01-01 00:00:00.000000 +00:00' file: line: