

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

# カスタム JAR ステップの送信
<a name="emr-launch-custom-jar-cli"></a>

カスタム JAR では、Amazon S3 にアップロードできるコンパイル済みの Java プログラムを実行します。起動する Hadoop のバージョンに合わせてプログラムをコンパイルし、Amazon EMR クラスターに `CUSTOM_JAR` ステップを送信する必要があります。JAR ファイルのコンパイル方法の詳細については、「[Amazon EMR を使用してバイナリを構築する](emr-build-binaries.md)」を参照してください。

Hadoop MapReduce アプリケーションの作成の詳細については、Apache Hadoop ドキュメントの「[MapReduce Tutorial](http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html)」を参照してください。

このセクションでは、Amazon EMR でのカスタム JAR ステップの送信の基本情報について説明します。カスタム JAR ステップを送信する場合は、データを処理するスクリプトを Java プログラミング言語で記述できます。

## コンソールを使用したカスタム JAR ステップの送信
<a name="ConsoleCreatingaCustomJARJob"></a>

この例では、Amazon EMR コンソールを使用して、実行中のクラスターにカスタム JAR ステップを送信する方法について説明します。

**コンソールを使用してカスタム JAR ステップを送信するには**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) で Amazon EMR コンソールを開きます。

1. [**Cluster List (クラスターリスト)**] で、クラスターの名前を選択します。

1. [**Steps (ステップ)**] セクションまでスクロールして展開し、[**Add step (ステップの追加)**] を選択します。

1. [**Add Step (ステップの追加)**] ダイアログで:
   + [**Step type**] で、[**Custom JAR**] を選択します。
   + [**Name**] では、デフォルト名（Custom JAR）を使用するか、または新しい名前を入力します。
   + [**JAR S3 location**] では、JAR ファイルの場所を入力または参照します。JAR の場所は、S3 へのパスまたはクラスパス内の完全修飾 Java クラスです。
   + [**Arguments (引数)**] では、必要な引数をスペース区切りの文字列として入力するか、フィールドを空のままにします。
   + [**Action on failure (失敗時の操作)**] では、デフォルトのオプション ([**Continue (続行)**]) を使用します。

1. **[Add]** (追加) を選択します。ステップは、[Pending] というステータスでコンソールに表示されます。

1. ステップが実行されると、ステータスは [Pending (保留中)] から [Running (実行中)]、[Running (実行中)] から [完了済み] に変更されます。ステータスを更新するには、[Actions] 列の上にある [**Refresh**] アイコンを選択します。

## を使用してクラスターを起動し、カスタム JAR ステップを送信する AWS CLI
<a name="emr-dev-create-jar-cli"></a>

**を使用してクラスターを起動し、カスタム JAR ステップを送信するには AWS CLI**

クラスターを起動し、 を使用してカスタム JAR ステップを送信するには AWS CLI、 `--steps`パラメータを使用して `create-cluster`サブコマンドを入力します。
+ クラスターを起動し、カスタム JAR ステップを送信するには、次のコマンドを入力して {{myKey}} を EC2 キーペア名に置き換え、{{amzn-s3-demo-bucket}} をバケット名に置き換えます。

  ```
  aws emr create-cluster --name "{{Test cluster}}" --release-label {{emr-7.13.0}} \
  --applications Name={{Hue}} Name={{Hive}} Name={{Pig}} --use-default-roles \
  --ec2-attributes KeyName={{myKey}} --instance-type {{m5.xlarge}} --instance-count {{3}} \
  --steps Type={{CUSTOM_JAR}},Name="{{Custom JAR Step}}",ActionOnFailure={{CONTINUE}},Jar={{pathtojarfile}},Args=["{{pathtoinputdata}}","{{pathtooutputbucket}}","{{arg1}}","{{arg2}}"]
  ```
**注記**  
読みやすくするために、Linux 行連続文字 (\\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

  `--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)。

## サードパーティーへの依存関係
<a name="emr-custom-jar-dependency"></a>

プログラムで使用するための JAR を MapReduce クラスパスに含める必要が生じる場合があります。これを行うための 2 つのオプションがあります。
+ 「`--libjars s3://{{URI_to_JAR}}`」の手順で、ステップオプションに [を使用してクラスターを起動し、カスタム JAR ステップを送信する AWS CLI](#emr-dev-create-jar-cli) を含めます。
+ `mapred-site.xml` で `mapreduce.application.classpath` 設定を変更して、クラスターを起動します。`mapred-site` 設定分類を使用します。を使用して ステップでクラスターを作成するには AWS CLI、次のようになります。

  ```
  aws emr create-cluster --release-label {{emr-7.13.0}} \
  --applications Name={{Hue}} Name={{Hive}} Name={{Pig}} --use-default-roles \
  --instance-type m5.xlarge --instance-count 2  --ec2-attributes KeyName={{myKey}} \
  --steps Type={{CUSTOM_JAR}},Name="{{Custom JAR Step}}",ActionOnFailure={{CONTINUE}},Jar={{pathtojarfile}},Args=["{{pathtoinputdata}}","{{pathtooutputbucket}}","{{arg1}}","{{arg2}}"] \
  --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json
  ```

  `myConfig.json`:

  ```
  [
      {
        "Classification": "mapred-site",
        "Properties": {
          "mapreduce.application.classpath": "{{path1}},{{path2}}"
        }
      }
    ]
  ```

  パスのカンマ区切りリストを、各タスクの JVM クラスパスに付加する必要があります。