カスタム JAR ステップの送信 - Amazon EMR

カスタム JAR ステップの送信

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

Hadoop MapReduce アプリケーションの作成の詳細については、Apache Hadoop ドキュメントの「MapReduce Tutorial」を参照してください。

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

コンソールを使用したカスタム JAR ステップの送信

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

コンソールを使用してカスタム JAR ステップを送信するには
  1. Amazon EMR コンソール (https://console.aws.amazon.com/emr) を開きます。

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

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

  4. [Add Step (ステップの追加)] ダイアログで:

    • [Step type] で、[Custom JAR] を選択します。

    • [Name] では、デフォルト名(Custom JAR)を使用するか、または新しい名前を入力します。

    • [JAR S3 location] では、JAR ファイルの場所を入力または参照します。JAR の場所は、S3 へのパスまたはクラスパス内の完全修飾 Java クラスです。

    • [Arguments (引数)] では、必要な引数をスペース区切りの文字列として入力するか、フィールドを空のままにします。

    • [Action on failure (失敗時の操作)] では、デフォルトのオプション ([Continue (続行)]) を使用します。

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

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

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

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

AWS CLI を使用して、クラスターを起動し、カスタム JAR ステップを送信するには、create-cluster サブコマンドを入力し、--steps パラメータを指定します。

  • クラスターを起動し、カスタム JAR ステップを送信するには、次のコマンドを入力して myKey を EC2 キーペア名に置き換え、amzn-s3-demo-bucket をバケット名に置き換えます。

    aws emr create-cluster --name "Test cluster" --release-label emr-7.3.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 サブコマンドを入力します。

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

サードパーティーへの依存関係

プログラムで使用するための JAR を MapReduce クラスパスに含める必要が生じる場合があります。これを行うための 2 つのオプションがあります。

  • --libjars s3://URI_to_JAR」の手順で、ステップオプションに AWS CLI を使用して、クラスターを起動しカスタム JAR ステップを送信する を含めます。

  • mapred-site.xmlmapreduce.application.classpath 設定を変更して、クラスターを起動します。mapred-site 設定分類を使用します。AWS CLI を使用してステップでクラスターを作成する場合、これは次のようになります。

    aws emr create-cluster --release-label emr-7.3.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 クラスパスに付加する必要があります。