Javaで作成したMapReduce処理をEMRで動かす

はじめに

Javaで作成したMapReduceの処理をEMRで動かしてみました。その手順について簡単ですが纏めてみたいと思います。

今回動かすMapReduce処理について

弊社小澤がHadoop MapReduce入門 | Hadoop Advent Calendar 2016 #01で書いた処理をそのまま使用します。この記事を参考に、動作するJarを作成しておいてください。

EMRでの実行

ではEMRでの実行についてです。手順としては

  1. JarをS3にアップロード
  2. クラスターの作成
  3. 作成したクラスターにステップを追加

となります。

1.JarをS3にアップロード

先に作成したJarをS3の任意のバケットに格納して置いて下さい。この手順については省略します。

2.クラスターの作成

次にEMRのクラスターを起動します。手順についてはEMRでクラスターを起動してHiveスクリプトを実行する内の記述を参考にしてください。

3.作成したクラスターにステップを追加

クラスターが立ち上がったら、ステップを追加します。このステップで、MapReduce処理を実装したJarを指定します。

マネジメントコンソールのクラスター画面にて「ステップの追加」ボタンを押下します。 java-mapreduce-on-emr-1

「ステップの追加」ダイアログが表示されるので、以下の値を入力します。

  • ステップタイプ・・・「カスタムJAR」を選択
  • 名前・・・任意のステップ名
  • JARの場所・・・S3にアップロードしたJarのフルパス
  • 引数・・・1つ目:Jarのメインクラス名(パッケージ名も含む)、2つ目以降:Jar内のロジックで必要な引数(今回はS3上の入力フォルダパス、出力フォルダパス)
  • 失敗時の操作・・・エラーとなった際の任意の操作を選択

java-mapreduce-on-emr-2

最後に「追加」ボタンを押下します。引数で指定した出力先に結果が配置されるはずです。

まとめ

参考にした小澤の記事と合わせ、ローカルでMapReduce処理を実装してEMR上で実行することができました。これを機にいろいろとEMRを試してみようと思います。