すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:スクリプトを手動で実行する

最終更新日:Mar 01, 2025

クラスタを作成した後、手動スクリプト実行機能を使用して、ビジネス要件に基づいて、クラスタ内の複数のノードで特定のスクリプトを同時に手動で実行できます。このトピックでは、スクリプトを手動で追加および実行する方法について説明します。

背景情報

手動スクリプト実行機能を使用すると、クラスタ内の複数のノードで特定のスクリプトを即座に同時に実行できます。この機能は、長期間稼働するクラスタに適しています。一時的なクラスタの場合は、ブートストラップアクションを使用してクラスタを初期化することをお勧めします。ブートストラップアクションの詳細については、「ブートストラップアクションを使用してスクリプトを実行する」をご参照ください。

手動で実行されるスクリプトは、ブートストラップアクションスクリプトに似ています。クラスタを作成した後、手動スクリプト実行機能を使用して、EMR クラスタにプリインストールされていないソフトウェアおよびサービスをインストールできます。例:

  • YUM を使用して、インストールパッケージが利用可能なソフトウェアをインストールします。

  • インターネットからパブリックソフトウェアをダウンロードします。

  • Object Storage Service (OSS) からデータを読み取ります。

  • Pig などのサービスをインストールして実行します。この場合、記述する必要があるスクリプトは複雑です。

前提条件

  • E-MapReduce(EMR)クラスタが作成されていること。詳細については、「クラスタを作成する」をご参照ください。

  • クラスタが実行中状態であること。他の状態のクラスタではスクリプトを実行できません。

  • クラスタスクリプトが開発または取得され、OSS にアップロードされていること。クラスタスクリプトの詳細については、「」をご参照ください。

注意事項

  • 手動で実行されたスクリプトのレコードは、最大 60 日間保持されます。

  • 特定の時点では、1 つのクラスタスクリプトのみをクラスタで実行できます。1 つがすでに進行中の場合は、別のクラスタスクリプトを送信することはできません。

  • クラスタスクリプトは一部のノードでは成功する可能性がありますが、他のノードでは失敗する可能性があります。たとえば、ノードを再起動したために、スクリプトの実行に失敗する可能性があります。問題を解決した後、失敗したノードでクラスタスクリプトを再実行できます。クラスタをスケールアウトした後、追加されたノードでクラスタスクリプトを実行することもできます。

手順

  1. スクリプト操作 タブに移動します。

    1. EMR コンソール にログオンします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。

    2. 上部のナビゲーションバーで、ビジネス要件に基づいて リージョンとリソースグループを選択します。

    3. 管理するクラスターを見つけ、[アクション] 列の [サービス] をクリックします。

    4. [スクリプト操作] タブをクリックします。

  2. [スクリプト操作] タブで、[手動実行] タブをクリックします。

  3. [作成して実行] をクリックします。

  4. 手動実行スクリプトの追加名前スクリプトアドレス実行ノードパラメーター ダイアログボックスで、 パラメータを構成し、 ドロップダウンリストからスクリプトが配置されているパスを選択し、 パラメータでスクリプトを実行するノードを選択し、 フィールドにカスタムパラメータを入力します。

    説明
    • クラスタ全体に対してスクリプトを実行する前に、単一ノードでスクリプトをテストすることをお勧めします。

    • スクリプトパスは oss://**/*.sh 形式である必要があります。

  5. [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 アドレスは、内部、パブリック、または 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

デフォルトでは、ルートアカウントを使用して、クラスタ内のノードで指定されたスクリプトが実行されます。スクリプトで su hadoop コマンドを実行して、hadoop ユーザーに切り替えることができます。