E-MapReduce (EMR) では、ブートストラップアクションを使用して、サードパーティ製ソフトウェアをインストールしたり、クラスタのランタイム環境を変更したりできます。このトピックでは、ブートストラップアクションを追加する方法といくつかの例について説明します。
背景情報
ブートストラップアクションを使用すると、クラスタの作成時、スケールアウト時、または自動スケーリングのトリガー時に、新しいノードで特定のスクリプトを自動的に実行できます。手動実行機能を使用すると、要件に合わせて、複数の既存ノードで指定されたスクリプトを同時に実行できます。スクリプトを手動で実行する方法の詳細については、「スクリプトを手動で実行する」をご参照ください。
ブートストラップアクションは、手動で実行されるスクリプトに似ています。クラスタの作成時または作成後に、ブートストラップアクションを使用して、EMR クラスタでサポートされていない操作を実行できます。たとえば、次の操作を実行できます。
Yellowdog Updater Modified (YUM) を使用して、インストールパッケージが利用可能なソフトウェアをインストールします。
インターネットからパブリックソフトウェアをダウンロードします。
Object Storage Service (OSS) からデータを読み取ります。
Flink や Impala などのサービスをインストールして実行します。
制限
クラスタには最大 10 個のブートストラップアクションを追加できます。ブートストラップアクションは、指定した順序で実行されます。
デフォルトでは、ルートアカウントを使用して指定されたスクリプトが実行されます。スクリプトで
su - hadoopコマンドを実行して、hadoop ユーザーに切り替えることもできます。
ブートストラップアクションを追加する
次のいずれかの方法を使用して、ブートストラップアクションを追加できます。
方法 1:クラスタの作成時にブートストラップアクションを追加する
ECS 上の EMR ページに移動します。
EMR コンソール にログインします。左側のナビゲーションウィンドウで、[ ECS 上の EMR] をクリックします。
上部のナビゲーションバーで、ビジネス要件に基づいて リージョンとリソースグループを選択します。
[ECS 上の EMR] ページで、[クラスタの作成] をクリックします。
[詳細設定] セクションの [基本設定] ステップで、[ブートストラップアクション] を見つけて、[ブートストラップアクションの追加] をクリックします。
次の表に示すパラメータを設定します。
パラメータ
説明
アクション名
追加するブートストラップアクションの名前。
スクリプトパス
スクリプトファイルが配置されている OSS パス。
oss://**/*.sh 形式でこのパラメータを設定する必要があります。
パラメータ
ブートストラップアクションスクリプトのパラメータ。このパラメータは、スクリプトで参照される変数の値を指定するために使用されます。
実行時間
コンポーネントのインストール前: サービスがインストールされる前に、システムがスクリプトを実行します。
コンポーネントの起動前: インストールされているサービスが起動される前に、システムがスクリプトを実行します。
コンポーネントの起動後: デプロイされたサービスが起動された後に、システムがスクリプトを実行します。
実行失敗ポリシー
続行: スクリプトの実行に失敗した場合、システムは次のスクリプトの実行を続行します。これは、クラスタの作成またはスケールアウトには影響しません。
停止: スクリプトの実行に失敗した場合、システムはスクリプトの実行を停止します。クラスタの作成またはスケールアウトは失敗します。
実行範囲
実行範囲。有効な値:
クラスタ: ブートストラップアクションはクラスタ全体に適用されます。
ノードグループタイプ: ブートストラップアクションは、特定タイプのノードグループにのみ適用されます。
例 のブートストラップアクションの例を参照できます。
説明追加されたブートストラップアクションは実行に失敗する可能性があります。ただし、この失敗はクラスタの作成には影響しません。
詳細については、「クラスタを作成する」をご参照ください。クラスタが作成された後、[スクリプト操作] タブで例外が発生したかどうかを確認できます。例外が発生した場合は、トラブルシューティングのために スクリプト実行ログを表示 できます。
方法 2:クラスタの作成後にブートストラップアクションを追加する
スクリプト操作 タブに移動します。
EMR コンソール にログインします。左側のナビゲーションウィンドウで、[ ECS 上の EMR] をクリックします。
上部のナビゲーションバーで、ビジネス要件に基づいて リージョンとリソースグループを選択します。
管理するクラスターを見つけ、[アクション] 列の [サービス] をクリックします。
[スクリプト操作] タブをクリックします。
[ブートストラップアクション] タブで、[ブートストラップアクションの追加] をクリックします。
[ブートストラップアクションの追加] ダイアログボックスで、次の表に示すパラメータを設定します。

パラメータ
説明
名前
追加するブートストラップアクションの名前。
スクリプトアドレス
スクリプトファイルが配置されている OSS パス。
oss://**/*.sh 形式でこのパラメータを設定する必要があります。
パラメータ
ブートストラップアクションスクリプトのパラメータ。このパラメータは、スクリプトで参照される変数の値を指定するために使用されます。
実行範囲
実行範囲。有効な値:
クラスタ: ブートストラップアクションはクラスタ全体に適用されます。
ノードグループタイプ: ブートストラップアクションは、選択したタイプのノードグループにのみ適用されます。
ノードグループ: ブートストラップアクションは、選択したノードグループにのみ適用されます。
実行時間
コンポーネントのインストール前: サービスがインストールされる前に、システムがスクリプトを実行します。
コンポーネントの起動前: インストールされているサービスが起動される前に、システムがスクリプトを実行します。
コンポーネントの起動後: デプロイされたサービスが起動された後に、システムがスクリプトを実行します。
実行失敗ポリシー
続行: スクリプトの実行に失敗した場合、システムは次のスクリプトの実行を続行します。これは、クラスタの作成またはスケールアウトには影響しません。
停止: スクリプトの実行に失敗した場合、システムはスクリプトの実行を停止します。クラスタの作成またはスケールアウトは失敗します。
[OK] をクリックします。
例 のブートストラップアクションの例を参照できます。
既存のブートストラップアクションに対して次の操作を実行できます。
ブートストラップアクションの編集: 編集するブートストラップアクションを見つけて、[操作] 列の [編集] をクリックします。
ブートストラップアクションの複製: 複製するブートストラップアクションを見つけて、[操作] 列の [複製] をクリックします。
ブートストラップアクションの削除: 削除するブートストラップアクションを見つけて、[操作] 列の [削除] をクリックします。
スクリプト実行ログを表示する
スクリプト内の目的の場所にログ出力ロジックを追加することをお勧めします。このようにして、操作ログに基づいてスクリプトのステータスを表示できます。
[操作履歴] パネルでブートストラップアクションスクリプトの実行ログを表示するには、次の操作を実行します。
[サービス] タブに移動します。
EMR コンソール にログインします。
左側のナビゲーションウィンドウで、[ECS 上の EMR] をクリックします。
上部のナビゲーションバーで、ビジネス要件に基づいてリージョンとリソースグループを選択します。
[EMR On ECS] ページで、目的のクラスターを見つけ、アクション 列の [サービス] をクリックします。
[スクリプト操作] タブで、管理するスクリプトを見つけて、[操作] 列の [実行結果の表示] をクリックします。スクリプト操作[実行結果の表示]アクション
[操作履歴] パネルで、ブートストラップアクションスクリプトの操作レコードを見つけて、詳細を表示します。
Data Lake、Dataflow、OLAP、Data Serving、およびカスタムクラスタ: create または increaseNodeGroup 操作レコードを見つけて、
をクリックしてアクティビティの詳細を表示します。RUN_BOOTSTRAP_CLUSTER_SCRIPT_<ブートストラップアクション名>_<ブートストラップアクション ID>で始まる名前のタスクは、ブートストラップアクションに関連するアクティビティです。Stdout ログと Stderr ログを表示できます。Hadoop、Data Science、および EMR Studio クラスタ: CREATE_CLUSTER または RESIZE_CLUSTER 操作レコードを見つけて、
をクリックしてアクティビティの詳細を表示します。pollDeployTaskStatusActivity の下で RUN_SCRIPT_HOST_** で始まる名前のタスクは、ブートストラップアクションに関連するアクティビティです。Stdout と Stderr の実行ログを表示できます。
例
ブートストラップアクションを追加する場合は、ビジネス要件に基づいて、ブートストラップアクション名、スクリプトファイルの OSS パス、およびスクリプトのパラメータを指定する必要があります。ブートストラップアクションが実行されると、各ノードは指定された OSS パスからスクリプトをダウンロードし、スクリプトを直接またはオプションのパラメータに基づいて実行します。このセクションでは 2 つの例を示します。
例 1
スクリプトで OSS からダウンロードするファイルを指定できます。この例では、次のスクリプトを使用して、oss://<yourBucket>/ ディレクトリから <myFile>.tar.gz ファイルをダウンロードし、オンプレミスマシンの /<yourDir> ディレクトリにファイルを解凍できます。
重要スクリプト内の OSS エンドポイントは、内部エンドポイント、パブリックエンドポイント、または VPC エンドポイントにすることができます。クラシックネットワークを使用する場合は、内部エンドポイントを指定する必要があります。たとえば、中国 (杭州) リージョンに対応する内部エンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。仮想プライベートクラウド (VPC) を使用する場合は、VPC からアクセスできるエンドポイントを指定する必要があります。たとえば、中国 (杭州) リージョンに対応するエンドポイントは vpc100-oss-cn-hangzhou.aliyuncs.com です。
Data Lake、Dataflow、OLAP、Data Serving、およびカスタムクラスタ
#!/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>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