ブートストラップフェーズ後にすべての Amazon EMR ノードを更新する方法を教えてください。

最終更新日: 2020 年 12 月 3 日

BOOTSTRAPPING 状態が完了した後、Amazon EMR クラスター上のすべてのノードを更新する方法を教えてください。

簡単な説明

ブートストラップフェーズは、Amazon EMR が Apache Hadoop や Apache Spark などのアプリケーションをインストールして設定する前に発生します。Amazon EMR がアプリケーションをインストールおよび設定した後にすべてのクラスターノードで追加の変更を行うには、別のスクリプトをダウンロードして実行するブートストラップアクションを実行します。

解決方法

1.    すべてのクラスターノードで実行する変更を指定する bash スクリプトを作成します。以下の例をご覧ください。

例 1: このスクリプトは、設定ファイル (/etc/hadoop/conf/hadoop-env.sh) が使用可能になるまで待機してから、追加の作業を実行します。

#!/bin/bash
#
# This is an example of script_b.sh
#
while [ ! -f /etc/hadoop/conf/hadoop-env.sh ]
do
  sleep 1
done
#
# Now the file is available, do your work here
#

exit 0

例 2: このスクリプトは、EMR クラスターが WAITING 状態になるまで待機してから、追加のカスタマイズを実装します。これにより、EMR クラスターは Hadoop およびその他のアプリケーションのインストールと設定を完了できます。

#!/bin/bash
#
# This is an example of script_b.sh
#
# Wait for EMR provisioning to become successful.
#
while [[ $(sed '/localInstance {/{:1; /}/!{N; b1}; /nodeProvision/p}; d' /emr/instance-controller/lib/info/job-flow-state.txt | sed '/nodeProvisionCheckinRecord {/{:1; /}/!{N; b1}; /status/p}; d' | awk '/SUCCESSFUL/' | xargs) != "status: SUCCESSFUL" ]];
do
  sleep 1
done
#
# Now the EMR cluster is ready. Do your work here.
#

exit 0

2.    EMR クラスターを起動し、次のようなブートストラップアクションを追加します。このスクリプトは、前のステップ (script_b.sh) で作成したスクリプトをダウンロードしてから、バックグラウンドで実行します。

#!/bin/bash
aws s3 cp s3://doc-example-bucket/script_b.sh .
chmod +x script_b.sh
nohup ./script_b.sh &>/dev/null &

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?