カスタム 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 ステップを送信するには
Amazon EMR コンソール (https://console.aws.amazon.com/emr
) を開きます。 -
[Cluster List (クラスターリスト)] で、クラスターの名前を選択します。
-
[Steps (ステップ)] セクションまでスクロールして展開し、[Add step (ステップの追加)] を選択します。
-
[Add Step (ステップの追加)] ダイアログで:
-
[Step type] で、[Custom JAR] を選択します。
-
[Name] では、デフォルト名(Custom JAR)を使用するか、または新しい名前を入力します。
-
[JAR S3 location] では、JAR ファイルの場所を入力または参照します。JAR の場所は、S3 へのパスまたはクラスパス内の完全修飾 Java クラスです。
-
[Arguments (引数)] では、必要な引数をスペース区切りの文字列として入力するか、フィールドを空のままにします。
-
[Action on failure (失敗時の操作)] では、デフォルトのオプション ([Continue (続行)]) を使用します。
-
-
[追加] を選択します。ステップは、[Pending] というステータスでコンソールに表示されます。
-
ステップが実行されると、ステータスは [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-labelemr-7.3.0
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --ec2-attributes KeyName=myKey
--instance-typem5.xlarge
--instance-count3
\ --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://
」の手順で、ステップオプションに AWS CLI を使用して、クラスターを起動しカスタム JAR ステップを送信する を含めます。URI_to_JAR
-
mapred-site.xml
でmapreduce.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.jsonmyConfig.json
:[ { "Classification": "mapred-site", "Properties": { "mapreduce.application.classpath": "
path1
,path2
" } } ]パスのカンマ区切りリストを、各タスクの JVM クラスパスに付加する必要があります。