追加のソフトウェアをインストールするためのブートストラップアクションの作成 - Amazon EMR

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

追加のソフトウェアをインストールするためのブートストラップアクションの作成

ブートストラップアクションを使用することにより、追加のソフトウェアのインストール、またはクラスターインスタンスの設定のカスタマイズを行うことができます。ブートストラップアクションは、Amazon EMR が Amazon Linux の Amazon マシンイメージ (AMI) を使用してインスタンスを起動した後に、クラスターで実行されるスクリプトです。ブートストラップアクションは、お客様がクラスターを作成するときに指定するアプリケーションを Amazon EMR がインストールする前、およびクラスターノードがデータの処理を開始する前に実行されます。実行中のクラスターにノードを追加した場合、ブートストラップアクションはこれらのノードでも同じ方法で実行されます。カスタムブートストラップアクションを作成し、クラスターを作成するタイミングを指定できます。

Amazon EMR AMI バージョン 2.x および 3.x 用の事前定義済みのブートストラップアクションのほとんどは、Amazon EMR リリース 4.x ではサポートされません。例えば、configure-Hadoopconfigure-daemons は、Amazon EMR リリース 4.x ではサポートされません。代わりに、Amazon EMR リリース 4.x ではこの機能がネイティブで提供されます。ブートストラップアクションを Amazon EMR AMI バージョン 2.x および 3.x から Amazon EMR リリース 4.x に移行する方法の詳細については、「Amazon EMR リリースガイド」の「Amazon EMR の以前のバージョンの AMI を使用したクラスターとアプリケーション設定のカスタマイズ」を参照してください。

ブートストラップアクションの基本

デフォルトでは、ブートストラップアクションは Hadoop ユーザーとして実行されます。ブートストラップアクションは、sudo を使用し、ルート権限で実行できます。

すべての Amazon EMR 管理インターフェイスでブートストラップアクションがサポートされています。コンソール、AWS CLI、または API から複数の bootstrap-actions パラメータを指定すると、クラスターごとに最大 16 個のブートストラップアクションを指定できます。

クラスターの作成時に、Amazon EMR コンソールからオプションでブートストラップアクションを指定できます。

CLI を使用する場合、create-cluster コマンドを使用してクラスターを作成するときに --bootstrap-actions パラメータを追加して、Amazon EMR にブートストラップアクションスクリプトへの参照を渡すことができます。

--bootstrap-actions Path="s3://mybucket/filename",Args=[arg1,arg2]

ブートストラップアクションがゼロ以外のエラーコードを返すと、Amazon EMR はそれをエラーとして処理し、インスタンスを終了します。ブートストラップアクションがエラーになるインスタンスが多すぎると、Amazon EMR はクラスターを終了します。ごくわずかのインスタンスでエラーになった場合、Amazon EMR は失敗したインスタンスの再割り当てを試み、処理を継続します。クラスターの lastStateChangeReason エラーコードを使用して、ブートストラップアクションによって引き起こされたエラーを識別します。

ブートストラップアクションを条件付きで実行する。

マスターノードでのみブートストラップアクションを実行するには、ノードがマスターかどうかを判断するロジックを含むカスタムブートストラップアクションを使用できます。

#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below

次の出力はコアノードから出力されます。

This is not master node, do nothing, exiting

次の出力はマスターノードから出力されます。

This is master, continuing to execute script

このロジックを使用するには、上記のコードを含むブートストラップアクションを Amazon S3 バケットにアップロードします。でAWS CLI、を追加します。--bootstrap-actionsパラメータをaws emr create-clusterAPI を呼び出し、ブートストラップスクリプトの場所を以下の値として指定します。Path

シャットダウンアクション

ブートストラップアクションスクリプトで 1 つ以上の shutdown actions を作成するには、スクリプトを /mnt/var/lib/instance-controller/public/shutdown-actions/ ディレクトリに書き込みます。クラスターが終了すると、ディレクトリ内のすべてのスクリプトが並行して実行されます。各スクリプトが 60 秒以内に実行され完了しなければなりません。

ノードの終了時にエラーが発生した場合、シャットダウンアクションスクリプトが実行される保証はありません。

注記

Amazon EMR バージョン 4.0 以降を使用する場合、マスターノードに /mnt/var/lib/instance-controller/public/shutdown-actions/ ディレクトリを手動で作成する必要があります。デフォルトでは存在しませんが、作成後は、このディレクトリのスクリプトがシャットダウンの前に実行されます。ディレクトリを作成するためのマスターノードへの接続の詳細については、「SSH を使用してプライマリノードに接続する」を参照してください。

カスタムブートストラップアクションの使用

カスタムスクリプトを作成すると、カスタマイズされたブートストラップアクションを実行します。Amazon EMR インターフェイスはすべて、カスタムブートストラップアクションを参照できます。

注記

最高のパフォーマンスを得るには、Amazon EMR で使用するカスタムブートストラップアクション、スクリプト、およびその他のファイルを、クラスターと同じ AWS リージョン 内の Simple Storage Service (Amazon S3) バケットに保存することをお勧めします。

カスタムブートストラップアクションを追加します。

注記

Amazon EMR コンソールを再設計して、使いやすくしました。を参照してください。コンソールの新機能について教えてください。新旧のコンソールエクスペリエンスの違いについては、こちらをご覧ください。

New console
新しいコンソールでブートストラップアクションを含むクラスターを作成するには
  1. にサインインAWS Management Console、次の場所にある Amazon EMR コンソールを開きます。https://console.aws.amazon.com/emr

  2. 未満EC2 の EMR左のナビゲーションペインで、クラスタそして、選択してくださいクラスターの作成

  3. 未満ブートストラップアクション、選択追加アクションの名前、スクリプトの場所、オプションの引数を指定します。を選択します。ブートストラップアクションを追加

  4. オプションで、ブートストラップアクションをさらに追加します。

  5. クラスターに当てはまるその他のオプションを選択してください。

  6. クラスターを起動するには、を選択します。クラスターを作成

Old console
古いコンソールでカスタムブートストラップアクションを使用してクラスターを作成するには
  1. 新しい Amazon EMR コンソールに移動し、以下を選択します。古いコンソールに切り替えます。サイド・ナビゲーションから。古いコンソールに切り替えた場合の注意点について詳しくは、を参照してください。古いコンソールの使用

  2. [Create cluster] (クラスターを作成) を選択します。

  3. [Go to advanced options] をクリックします。

  4. [Create Cluster] - [Advanced Options] で、説明に従ってステップ 1 と 2 でオプションを選択し、「Step 3: General Cluster Settings」に進みます。

  5. [Bootstrap Actions] で [Configure and add] を選択して、ブートストラップアクションの [Name]、[JAR location]、および引数を指定します。[追加] を選択します。

  6. オプションで、必要に応じてさらにブートストラップアクションを追加します。

  7. クラスターの作成に進みます。ブートストラップアクションは、クラスターがプロビジョニングおよび初期化された後で実行されます。

    クラスターのプライマリノードが稼働している間は、プライマリノードに接続して、ブートストラップアクションスクリプトによって生成されたログファイルを確認できます。/mnt/var/log/bootstrap-actions/1ディレクトリ。

CLI
を使用してカスタムブートストラップアクションを使用してクラスターを作成するにはAWS CLI

AWS CLI を使用してブートストラップアクションを含めるときは、PathArgs をカンマ区切りリストとして指定します。次の例では引数リストを使用していません。

  • カスタムブートストラップアクションを使用してクラスターを起動するには、以下のコマンドを次のように入力します。MyKeyEC2 キーペアの名前と一緒に。含める--bootstrap-actionsパラメータとして、ブートストラップスクリプトの場所を以下の値として指定します。Path

    • Linux、UNIX、Mac OS X ユーザー:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    • Windows ユーザー:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"

    を使わずにインスタンス数を指定した場合--instance-groupsパラメータでは、1 つのプライマリノードが起動され、残りのインスタンスはコアノードとして起動されます。すべてのノードで、コマンドで指定したインスタンスタイプが使用されます。

    注記

    以前にデフォルトの Amazon EMR サービスロールと EC2 インスタンスプロファイルを作成していない場合は、「aws emr create-default-roles」と入力してそれらを作成してから、create-cluster サブコマンドを入力します。

    AWS CLI での Amazon EMR コマンドの使用の詳細については、https://docs.aws.amazon.com/cli/latest/reference/emr を参照してください。

カスタムブートストラップアクションを使用した Simple Storage Service (Amazon S3) から各ノードへのオブジェクトのコピー

アプリケーションをインストールする前に、Simple Storage Service (Amazon S3) からクラスター内の各ノードにオブジェクトをコピーするブートストラップアクションを使用できます。AWS CLI はクラスターの各ノードにインストールされ、ブートストラップアクションは AWS CLI コマンドを呼び出すことができます。

Simple Storage Service (Amazon S3) から各クラスターノードのローカルフォルダ /mnt1/myfolder にファイル myfile.jar をコピーする簡単なブートストラップアクションスクリプトの例を次に示します。スクリプトは、以下の内容を使って、copymyfile.sh のファイル名で Simple Storage Service (Amazon S3) に保存されます。

#!/bin/bash aws s3 cp s3://mybucket/myfilefolder/myfile.jar /mnt1/myfolder

クラスターの起動時にスクリプトを指定します。次の AWS CLI はこの例を示します。

aws emr create-cluster --name "Test cluster" --release-label emr-5.36.1 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://mybucket/myscriptfolder/copymyfile.sh"