

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR クラスターを起動するときにアプリケーションを設定する
<a name="emr-plan-software"></a>

ソフトウェアリリースを選択すると、Amazon EMR は Amazon マシンイメージ (AMI) と Amazon Linux を使用して、クラスターの起動時に選択したソフトウェア（Hadoop、Spark、Hive など）をインストールします。Amazon EMR は、新しいリリースを定期的に提供しており、新機能、新しいアプリケーション、全般的な更新が追加されます。可能な限り最新のリリースを使用して、クラスターを起動することをお勧めします。最新リリースは、コンソールからクラスターを起動する場合のデフォルトオプションです。

各リリースで使用できるソフトウェアの Amazon EMR リリースとバージョンの詳細については、「[Amazon EMR リリースガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)」を参照してください。クラスターにインストールされているアプリケーションおよびソフトウェアのデフォルト設定を編集する方法の詳細については、「Amazon EMR リリースガイド」の「[アプリケーションの設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)」を参照してください。Amazon EMR リリースに含まれるオープンソース Hadoop および Spark エコシステムコンポーネントの一部のバージョンには、「[Amazon EMR リリースガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)」で説明されているパッチと改良が含まれています。

 クラスター上のインストールに使用できる標準ソフトウェアおよびアプリケーションに加えて、ブートストラップアクションを使用してカスタムソフトウェアをインストールできます。ブートストラップアクションは、クラスターの起動時に実行されるスクリプトと、作成時にクラスターに追加される新しいノードで実行されるスクリプトです。ブートストラップアクションは、各ノードで AWS CLI コマンドを呼び出してAmazon S3からクラスター内の各ノードにオブジェクトをコピーするのにも役立ちます。

**注記**  
 ブートストラップアクションは、Amazon EMR リリース 4.x 以降では使用方法が異なります。Amazon EMR AMI バージョン 2.x および 3.x とのこれらの違いの詳細については、「Amazon EMR リリースガイド」の「[4.x リリースバージョンの違い](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-differences.html)」を参照してください。

# Amazon EMR クラスターで追加のソフトウェアをインストールするブートストラップアクションを作成する
<a name="emr-plan-bootstrap"></a>

*ブートストラップアクション*を使用することにより、追加のソフトウェアのインストール、またはクラスターインスタンスの設定のカスタマイズを行うことができます。ブートストラップアクションは、Amazon EMR が Amazon Linux の Amazon マシンイメージ (AMI) を使用してインスタンスを起動した後に、クラスターで実行されるスクリプトです。ブートストラップアクションは、お客様がクラスターを作成するときに指定するアプリケーションを Amazon EMR がインストールする前、およびクラスターノードがデータの処理を開始する前に実行されます。実行中のクラスターにノードを追加した場合、ブートストラップアクションはこれらのノードでも同じ方法で実行されます。カスタムブートストラップアクションを作成し、クラスターを作成するタイミングを指定できます。

Amazon EMR AMI バージョン 2.x および 3.x 用の事前定義済みのブートストラップアクションのほとんどは、Amazon EMR リリース 4.x ではサポートされません。例えば、`configure-Hadoop` と `configure-daemons` は、Amazon EMR リリース 4.x ではサポートされません。代わりに、Amazon EMR リリース 4.x ではこの機能がネイティブで提供されます。ブートストラップアクションを Amazon EMR AMI バージョン 2.x および 3.x から Amazon EMR リリース 4.x に移行する方法の詳細については、「Amazon EMR リリースガイド」の「[Amazon EMR の以前のバージョンの AMI を使用したクラスターとアプリケーション設定のカスタマイズ](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-3x-customizeappconfig.html)」を参照してください。

## ブートストラップアクションの基本
<a name="bootstrapUses"></a>

デフォルトでは、ブートストラップアクションは Hadoop ユーザーとして実行されます。ブートストラップアクションは、`sudo` を使用し、ルート権限で実行できます。

すべての Amazon EMR 管理インターフェイスでブートストラップアクションがサポートされています。コンソール、または API から複数の`bootstrap-actions`パラメータを指定することで AWS CLI、クラスターごとに最大 16 のブートストラップアクションを指定できます。

クラスターの作成時に、Amazon EMR コンソールからオプションでブートストラップアクションを指定できます。

CLI を使用する場合、`create-cluster` コマンドを使用してクラスターを作成するときに `--bootstrap-actions` パラメータを追加して、Amazon EMR にブートストラップアクションスクリプトへの参照を渡すことができます。

```
--bootstrap-actions Path="s3://amzn-s3-demo-bucket/filename",Args=[arg1,arg2]
```

ブートストラップアクションがゼロ以外のエラーコードを返すと、Amazon EMR はそれをエラーとして処理し、インスタンスを終了します。ブートストラップアクションがエラーになるインスタンスが多すぎると、Amazon EMR はクラスターを終了します。ごくわずかのインスタンスでエラーになった場合、Amazon EMR は失敗したインスタンスの再割り当てを試み、処理を継続します。クラスターの `lastStateChangeReason` エラーコードを使用して、ブートストラップアクションによって引き起こされたエラーを識別します。

## ブートストラップアクションを条件付きで実行する
<a name="emr-bootstrap-runif"></a>

マスターノードでのみブートストラップアクションを実行するには、そのノードがマスターかどうかを判断するロジックを含むカスタムブートストラップアクションを使用できます。

```
#!/bin/bash
if grep isMaster /mnt/var/lib/info/instance.json | grep false;
then        
    echo "This is not master node, do nothing,exiting"
    exit 0
fi
echo "This is master, continuing to execute script"
# continue with code logic for master node below
```

次の出力はコアノードから出力されます。

```
This is not master node, do nothing, exiting
```

次の出力はマスターノードから出力されます。

```
This is master, continuing to execute script
```

このロジックを使用するには、上記のコードを含むブートストラップアクションを Amazon S3 バケットにアップロードします。で AWS CLI、 `aws emr create-cluster` API コールに `--bootstrap-actions`パラメータを追加し、ブートストラップスクリプトの場所を の値として指定します`Path`。

## シャットダウンアクション
<a name="bootstrap_Shutown"></a>

ブートストラップアクションスクリプトで 1 つ以上の shutdown actions を作成するには、スクリプトを `/mnt/var/lib/instance-controller/public/shutdown-actions/` ディレクトリに書き込みます。クラスターが終了すると、ディレクトリ内のすべてのスクリプトが並行して実行されます。各スクリプトが 60 秒以内に実行され完了しなければなりません。

 ノードの終了時にエラーが発生した場合、シャットダウンアクションスクリプトが実行される保証はありません。

**注記**  
Amazon EMR バージョン 4.0 以降を使用する場合、マスターノードに `/mnt/var/lib/instance-controller/public/shutdown-actions/` ディレクトリを手動で作成する必要があります。デフォルトでは存在しませんが、作成後は、このディレクトリのスクリプトがシャットダウンの前に実行されます。ディレクトリを作成するためのマスターノードへの接続の詳細については、「[SSH を使用して Amazon EMR クラスタープライマリノードに接続する](emr-connect-master-node-ssh.md)」を参照してください。

## カスタムブートストラップアクションの使用
<a name="bootstrapCustom"></a>

カスタムスクリプトを作成すると、カスタマイズされたブートストラップアクションを実行します。Amazon EMR インターフェイスはすべて、カスタムブートストラップアクションを参照できます。

**注記**  
最高のパフォーマンスを得るには、Amazon EMR で使用するカスタムブートストラップアクション、スクリプト、その他のファイルを、 AWS リージョン クラスターと同じ にある Amazon S3 バケットに保存することをお勧めします。

**Topics**
+ [カスタムブートストラップアクションの追加](#custom-bootstrap)
+ [カスタムブートストラップアクションを使用した Simple Storage Service (Amazon S3) から各ノードへのオブジェクトのコピー](#CustomBootstrapCopyS3Object)

### カスタムブートストラップアクションの追加
<a name="custom-bootstrap"></a>

------
#### [ Console ]

**コンソールを使用してブートストラップアクションでクラスターを作成するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で、**[クラスター]** を選択し、**[クラスターの作成]** を選択します

1. **[ブートストラップアクション]** で **[追加]** を選択し、アクションの名前、スクリプトの場所、オプション引数を指定します。**[ブートストラップアクションを追加]** を選択します。

1. オプションで、さらにブートストラップアクションを追加します。

1. クラスターに適用するその他のオプションを選択します。

1. クラスターを起動するには、**[クラスターの作成]** を選択します。

------
#### [ CLI ]

**を使用してカスタムブートストラップアクションでクラスターを作成するには AWS CLI**

を使用してブートストラップアクション AWS CLI を含める場合は、カンマ区切りリスト`Args`として `Path`と を指定します。次の例では、引数リストが使用されていません。
+ カスタムブートストラップアクションでクラスターを起動するには、次のコマンドを入力し、*myKey* を EC2 キーペアの名前に置き換えます。`--bootstrap-actions` をパラメータとして含め、ブートストラップスクリプトの場所を `Path` の値として指定します。
  + Linux、UNIX、Mac OS X ユーザー:

    ```
    1. aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \
    2. --use-default-roles --ec2-attributes KeyName=myKey \
    3. --applications Name=Hive Name=Pig \
    4. --instance-count 3 --instance-type m5.xlarge \
    5. --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    ```
  + Windows ユーザー:

    ```
    1. aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    ```

  `--instance-groups` パラメータを使用せずにインスタンス数を指定すると、1 つのプライマリノードが起動され、残りのインスタンスはコアノードとして起動されます。すべてのノードで、コマンドで指定したインスタンスタイプが使用されます。
**注記**  
以前にデフォルトの Amazon EMR サービスロールと EC2 インスタンスプロファイルを作成していない場合は、「`aws emr create-default-roles`」と入力してそれらを作成してから、`create-cluster` サブコマンドを入力します。

  での Amazon EMR コマンドの使用の詳細については AWS CLI、「」を参照してください[https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)。

------

### カスタムブートストラップアクションを使用した Simple Storage Service (Amazon S3) から各ノードへのオブジェクトのコピー
<a name="CustomBootstrapCopyS3Object"></a>

アプリケーションをインストールする前に、Simple Storage Service (Amazon S3) からクラスター内の各ノードにオブジェクトをコピーするブートストラップアクションを使用できます。 AWS CLI はクラスターの各ノードにインストールされるため、ブートストラップアクションは AWS CLI コマンドを呼び出すことができます。

Simple Storage Service (Amazon S3) から各クラスターノードのローカルフォルダ `/mnt1/myfolder` にファイル `myfile.jar` をコピーする簡単なブートストラップアクションスクリプトの例を次に示します。スクリプトは、以下の内容を使って、`copymyfile.sh` のファイル名で Simple Storage Service (Amazon S3) に保存されます。

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder
```

クラスターの起動時にスクリプトを指定します。次の AWS CLI 例は、これを示しています。

```
aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
--use-default-roles --ec2-attributes KeyName=myKey \
--applications Name=Hive Name=Pig \
--instance-count 3 --instance-type m5.xlarge \
--bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"
```