クラスターを作成した後、手動スクリプト実行機能を使用して、複数のノードで特定のスクリプトを実行し、カスタム要件を満たすことができます。このトピックでは、手動スクリプトの追加方法と実行方法について説明します。
背景情報
手動スクリプト実行機能を使用すると、複数の既存のノードで特定のスクリプトをすぐに実行できます。この機能は、長時間実行されるクラスターに適しています。オンデマンドで作成される一時的なクラスターの場合は、ブートストラップアクションを使用してクラスターを初期化します。ブートストラップアクションの詳細については、「ブートストラップアクションを使用してスクリプトを実行する」をご参照ください。
手動実行はブートストラップアクションに似ています。クラスターを作成した後、手動実行機能を使用して、クラスターでまだサポートされていないソフトウェアやサービスをインストールできます。次に例を示します。
Yellowdog Updater, Modified (YUM) を使用してソフトウェアをインストールします。
インターネットからソフトウェアをダウンロードします。
Object Storage Service (OSS) からデータを読み取ります。
より複雑なスクリプトを必要とする Pig コンポーネントなどのサービスをインストールして実行します。
前提条件
使用上の注意
手動で実行されたスクリプトのレコードは、最大 60 日間保持されます。
一度にクラスターで実行できるクラスター スクリプトは 1 つだけです。クラスター スクリプトが実行中の場合、新しいスクリプトを送信することはできません。
クラスター スクリプトは、一部のノードでは成功し、他のノードでは失敗する場合があります。たとえば、ノードの再起動が原因でスクリプトが失敗することがあります。問題を解決した後、以前に失敗したノードでのみスクリプトを再実行できます。クラスターをスケールアウトした後、新しいノードでのみスクリプトを実行することもできます。
手順
[スクリプト操作] タブに移動します。
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
上部のナビゲーションバーで、ビジネス要件に基づいてリージョンとリソースグループを選択します。
管理するクラスターを見つけ、[アクション] 列の [サービス] をクリックします。
[スクリプト操作] タブをクリックします。
[スクリプト操作] ページで、[手動実行] タブをクリックします。
[作成して実行] をクリックします。
表示されるダイアログボックスで、[名前] を入力し、[スクリプトの場所] ドロップダウンリストから場所を選択し、[実行範囲] ドロップダウンリストから範囲を選択します。
説明クラスター スクリプト機能を使用する場合は、まずシングルノードでスクリプトをテストします。テストが成功したら、クラスター全体でスクリプトを実行します。
スクリプトパスは oss://**/*.sh 形式である必要があります。
パラメーターを設定したら、[OK] をクリックします。
スクリプトが作成されると、スクリプトリストに追加され、ステータスが [実行中] になります。スクリプトのステータスには、[実行中]、[完了]、[送信失敗] があります。
[アクション] 列で [詳細] をクリックして、スクリプトの詳細を表示します。
[実行結果の表示] をクリックして、スクリプトの実行ステータスを表示します。
ノード上のスクリプトのステータスは、[待機中]、[実行中]、[完了]、[失敗]、[送信失敗]、または [キャンセル済み] です。
[アクション] 列で [削除] をクリックしてスクリプトを削除します。
例
ブートストラップアクション スクリプトと同様に、クラスター スクリプトで OSS からダウンロードするファイルを指定できます。たとえば、サンプルファイル oss://<yourBucket>/<myFile>.tar.gz をローカルディレクトリにダウンロードし、/yourDir ディレクトリに解凍します。
#!/bin/bash
osscmd --id=<yourAccessKeyId> --key=<yourAccessKeySecret> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourBucketName>/<yourFile>.tar.gz ./<yourFile>.tar.gz
mkdir -p /<yourDir>
tar -zxvf <yourFile>.tar.gz -C /<yourDir>OSS アドレスは、内部エンドポイント、パブリックエンドポイント、または virtual private cloud (VPC) エンドポイントにすることができます。クラシックネットワークを使用する場合は、内部エンドポイントを指定します。たとえば、中国 (杭州) リージョンの OSS の内部エンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。VPC を使用する場合は、VPC からアクセス可能なドメイン名を指定します。たとえば、中国 (杭州) リージョンの OSS のドメイン名は vpc100-oss-cn-hangzhou.aliyuncs.com です。
また、YUM と共にクラスター スクリプトを使用して、ld-linux.so.2 などの追加のシステムパッケージをインストールすることもできます。
#!/bin/bash
yum install -y ld-linux.so.2デフォルトでは、スクリプトは root ユーザーによって実行されます。スクリプトで su hadoop コマンドを使用して hadoop ユーザーに切り替えることもできます。