ブートストラップアクションを使用すると、必要なサードパーティソフトウェアをインストールしたり、クラスターの実行環境を変更したりできます。このトピックでは、ブートストラップアクションの追加方法と使用例について説明します。
背景情報
ブートストラップアクションは、クラスターの作成、スケールアウト、またはオートスケーリングを有効にする際に、新しく追加されたノードで指定されたスクリプトを自動的に実行します。また、既存のノードで指定されたスクリプトを手動で選択して一括実行し、カスタム要件に対応することもできます。スクリプトの手動実行の詳細については、「手動でのスクリプト実行」をご参照ください。
手動実行と同様に、クラスターの作成中または作成後にブートストラップアクションを使用して、E-MapReduce (EMR) が標準ではサポートしていない次のような操作を実行できます。
-
Yum を使用して利用可能なソフトウェアをインストールすること。
-
インターネットから公開ソフトウェアをダウンロードすること。
-
Object Storage Service (OSS) からデータを読み取ること。
-
Flink や Impala などのコンポーネントをインストールして実行すること。
制限事項
-
最大 10 個のブートストラップアクションを追加できます。指定した順序で実行されます。
-
デフォルトでは、EMR は root ユーザーとしてスクリプトを実行します。スクリプトで
su - hadoopコマンドを実行して、hadoop ユーザーに切り替えることもできます。
ブートストラップアクションの追加
ブートストラップアクションは、次の 2 つの方法のいずれかで追加できます。
作成時
-
クラスター管理ページに移動します。
-
E-MapReduce コンソールにログインします。
-
上部メニューで、リージョンとリソースグループを選択します。
-
-
EMR on ECS ページで、CREATE_CLUSTER をクリックします。
-
[基本設定]ステップの [Advanced Settings] セクションで、[Bootstrap Actions]の行にある Add Bootstrap Action をクリックします。
-
次のパラメーターを設定します。
パラメーター
説明
[Operation Name]
ブートストラップアクションの名前。
[Script Path]
スクリプトが格納されている OSS パス。
スクリプトパスは oss://*.sh の形式である必要があります。
[Parameter]
ブートストラップアクションスクリプトの引数です。スクリプト内で参照する変数の値を指定します。
[実行時間]
-
[Before Component Installation]:コンポーネントをインストールする前にスクリプトが実行されます。
-
[コンポーネントを起動する前に]:コンポーネントがインストールされた後、起動する前にスクリプトが実行されます。
-
[After Component Startup]:コンポーネントの起動後にスクリプトが実行されます。
[Execution Failure Policy]
-
[Proceed]:スクリプトの実行に失敗した場合でも、後続のスクリプトの実行は継続されます。クラスターの作成やスケールアウトのプロセスには影響しません。
-
[Stop]:スクリプトの実行に失敗した場合、その時点でスクリプトの実行は停止され、クラスターの作成またはスケールアウトのプロセスは失敗します。
[Execution Scope]
有効な値は次のとおりです。
-
[Cluster]:ブートストラップアクションはクラスター全体に適用されます。
-
[Node Group Type]:ブートストラップアクションは、選択されたノードグループタイプにのみ適用されます。
ブートストラップアクションの例については、「使用例」をご参照ください。
説明「続行」ポリシーを選択した場合、ブートストラップアクションが失敗しても、クラスター作成プロセスには影響しません。
クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。クラスターの作成後、クラスターの [Script Operation] ページに移動してエラーを確認できます。エラーが発生した場合は、「スクリプト実行ログの表示」をご参照ください。
-
作成後
-
「スクリプト操作」ページに移動します。
-
E-MapReduce コンソールにログインします。
-
上部メニューで、リージョンとリソースグループを選択します。
-
対象のクラスターの Services をクリックします。
-
[Script Operation]タブをクリックします。
-
-
[Bootstrap Actions]ページで、Add Bootstrap Action をクリックします。
-
[Add Bootstrap Action]ダイアログボックスで、パラメーターを設定します。

パラメーター
説明
[Name]
ブートストラップアクションの名前。
[Script Address]
スクリプトが格納されている OSS パス。
スクリプトパスは oss://*.sh 形式である必要があります。
[Parameter]
ブートストラップアクションスクリプトの引数です。スクリプト内で参照する変数の値を指定します。
[Execution Scope]
有効な値は次のとおりです。
-
[Cluster]:ブートストラップアクションはクラスター全体に適用されます。
-
[Node Group Type]:ブートストラップアクションは、選択されたノードグループタイプにのみ適用されます。
-
[ノードグループの指定]:ブートストラップアクションは、選択されたノードグループにのみ適用されます。
[実行時間]
-
[Before Component Installation]:コンポーネントをインストールする前にスクリプトが実行されます。
-
[コンポーネントを起動する前に]:コンポーネントがインストールされた後、起動する前にスクリプトが実行されます。
-
[After Component Startup]:コンポーネントの起動後にスクリプトが実行されます。
[Execution Failure Policy]
-
[Proceed]:スクリプトの実行に失敗した場合でも、後続のスクリプトの実行は継続されます。クラスターの作成やスケールアウトのプロセスには影響しません。
-
[Stop]:スクリプトの実行に失敗した場合、その時点でスクリプトの実行は停止され、クラスターの作成またはスケールアウトのプロセスは失敗します。
-
-
OK をクリックします。
ブートストラップアクションの例については、「使用例」をご参照ください。
既存のブートストラップアクションでは、次の操作を実行できます。
-
編集:対象のブートストラップアクションの行にある 編集 をクリックします。
-
Clone:対象のブートストラップアクションの行にある Clone をクリックします。
-
削除:対象のブートストラップアクションの行にある 削除 をクリックします。
-
スクリプト実行ログの表示
スクリプトの主要な箇所にロギングロジックを追加することを推奨します。これにより、実行ログを確認して実行時の問題をトラブルシューティングできます。
ブートストラップアクションスクリプトの実行ログは、操作履歴で確認できます。手順は次のとおりです。
-
クラスターのサービスページに移動します。
-
EMR コンソールにログインします。
-
ナビゲーションペインで、[EMR on ECS] をクリックします。
-
上部メニューで、リージョンとリソースグループを選択します。
-
EMR on ECS ページで、対象のクラスターの Services をクリックします。
-
-
「スクリプト操作」タブをクリックし、確認したいスクリプトの右側にある 実行結果の表示 をクリックします。
-
[Operation History]パネルで、対応する操作レコードを見つけ、その詳細を表示します。
-
DataLake、Dataflow、OLAP、DataServing、およびカスタムクラスターの場合:クラスターの作成 (create) またはスケールアウト (increaseNodeGroup) の操作レコードで、
をクリックしてタスクの詳細を表示します。ブートストラップアクションを実行するタスクには、RUN_BOOTSTRAP_CLUSTER_SCRIPT_<bootstrap action name>_<bootstrap action ID>で始まる名前が付けられています。Stdout ログと Stderr ログを確認できます。 -
Hadoop、Data Science、および EMR Studio クラスターの場合:クラスターの作成 (CREATE_CLUSTER) またはスケールアウト (RESIZE_CLUSTER) の操作レコードで、
をクリックしてタスクの詳細を表示します。pollDeployTaskStatusActivity の配下にある、ブートストラップアクションを実行するタスクには、RUN_SCRIPT_HOST_**で始まる名前が付けられています。Stdout ログと Stderr ログを確認できます。
-
使用例
ブートストラップアクションを設定する際には、その名前と OSS 上のスクリプトのパスを指定する必要があります。必要に応じてスクリプトの引数を指定することもできます。ブートストラップアクションが実行されると、各ノードは指定された OSS スクリプトをダウンロードし、直接実行するか、指定されたオプションの引数を使用して実行します。以下に例を示します。
-
例 1
スクリプトで OSS からダウンロードするファイルを指定できます。たとえば、次のスクリプトは oss://<yourBucket>/<myFile>.tar.gz ファイルをダウンロードし、/<yourDir> ディレクトリに解凍します。
重要OSS は、内部エンドポイント、パブリックエンドポイント、および VPC エンドポイントを提供します。 クラシックネットワークを使用する場合、内部エンドポイントを指定する必要があります。 たとえば、中国 (杭州) リージョンの内部エンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。 VPC を使用する場合、VPC からアクセス可能なドメイン名を指定する必要があります。 たとえば、中国 (杭州) リージョンの VPC エンドポイントは vpc100-oss-cn-hangzhou.aliyuncs.com です。
-
DataLake、Dataflow、OLAP、DataServing、およびカスタムクラスター
#!/bin/bash ossutil64 cp oss://<yourBucket>/<myFile>.tar.gz ./ -e oss-cn-hangzhou-internal.aliyuncs.com -i <yourAccessKeyId> -k <yourAccessKeySecret> mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir> -
レガシー DataLake (Hadoop) クラスター
#!/bin/bash osscmd --id=<yourAccessKeyId> --key=<yourAccessKeySecret> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourBucket>/<myFile>.tar.gz ./ mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir>
-
-
例 2
Yum を使用して、ld-linux.so.2 などの追加パッケージをインストールできます。
#!/bin/bash yum install -y ld-linux.so.2