Spark 2.0の回帰分析アプリをScalaのSBTで実装し、EMRで実行Amazon EMRで構築するApache Spark超入門(2)(3/3 ページ)

» 2016年09月27日 05時00分 公開
[川原仁人コラビット]
前のページへ 1|2|3       

コード実行の前にSparkでS3のファイル読み書きができるように設定

 ローカルでSparkのアプリケーションを実行する場合は、S3のファイルの読み書きができるように設定が必要です。

 まず、前回ダウンロードした「spark2.0.0」のディレクトリに移動します。

 confディレクトリ内に、「spark-defaults.conf」というファイルを作成します。下記のように編集してください。

spark.jars.packages  com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.1 # この行を追加してください。

 これでSparkの設定はOKです。

jarファイルの作成とローカルでの実行

 それでは、記述したコードを実行したいと思います。

 まず、sbtのプロジェクト(SparkExampleApp)のルートディレクトリに移動して、下記のコマンドでjarファイルを作成します。

sbt package

 jarファイルはプロジェクト内の「target/scala-2.11/」以下に作成されるはずです。

 続けて、前回ダウンロードしたsparkのディレクトリに移動して、下記のコマンドでアプリケーションをローカルで実行します。

./bin/spark-submit --class SparkExampleApp --master local {自分の作成したjarファイルのpath} {S3に配置したdata.csvのパス) {S3の保存先のパス}

 例えば下記のようなコマンドになるはずです。

./bin/spark-submit --class SparkExampleApp --master local ~/Desktop/SparkExampleApp/target/scala-2.11/spark-sample-project_2.11-1.0.jar s3n://my-bucket-name/data.csv s3n://my-bucket-name/output.csv

 出力されたcsvファイルをプロットしてみると、下記のようになると思います。

EMRでクラスターを構築し、Sparkアプリケーションを実行

 ローカルでの起動に成功したら、今度はEMR上でも実行します。

 まず、下記、EMRのAWSコンソールヘ移動します(リージョンはTokyoで行います)。

 「クラスターを作成」というボタンを押してください。

 「クラスターの作成 - クイックオプション」というタイトルのページが表示されたら、下記の項目を入力してください。

  • クラスター名:自分の覚えやすい名前で
  • 起動モード:「ステップ実行」を選ぶ(クラスターとの違いは、アプリケーション実行後に自動終了するかしないか)
  • ステップタイプ:「Spark アプリケーション」を選ぶ
  • ステップの追加
    • 名前:好きな名前を設定
    • デプロイモード:「クラスター」を選ぶ
    • Spark-submit オプション:--class SparkExampleApp
    • アプリケーションの場所:作成したjarファイルをs3にアップロードして、そのパスを指定する
    • 引数:「s3n://my-bucket-name/data.csv s3n://my-bucket-name/output.csv」のような感じで、先ほどローカルで行ったときのように指定する
    • 失敗時の操作:「クラスターを終了」を選ぶ
  • リリース:執筆時点で最新の「emr-5.0.0」を選ぶ
  • アプリケーション:「Spark: Spark 2.0.0 on Hadoop 2.7.2 YARN with Ganglia 3.7.2 and Zeppelin 0.6.1」を選ぶ
  • インスタンスタイプ:適当なものを選ぶ
  • インスタンス数:適当な数を設定する。今回は計算が簡単なので多くなくてよい
  • EC2 キーペア:「作成済みの鍵」を選ぶ。WebUIにアクセスする際にポートフォワーディングを行うときに必要になる
  • アクセス権限:「デフォルト」を選ぶ
注:画面では「--class App」となっているところは、「--class SparkExampleApp」と入力してください。

 最後に画面下部の「クラスターを作成」ボタンを押します。

 すると、下記の流れでアプリケーションが実行されます。

  1. EC2インスタンスの起動
    インスタンスタイプとインスタンス数に応じて起動する
  2. yarnクラスターの構築
    EMRはyarnクラスター上でSparkを実行する
  3. Sparkの設定(yarnクラスターの設定や、awssdkなどの設定)
    Sparkアプリケーションを実行するのに必要なファイルなどを配置してくれる
  4. jarファイル(Sparkアプリケーション)の実行
    spark-submitコマンドがdriverのインスタンス上で実行される

 S3の指定の場所にcsvが生成されていれば、成功です。

EMRにおけるSparkの設定

 EMRはspark-defaults.confの設定を自動的に行ってくれます。例えばドライバのメモリや、executorの数、awssdkの依存設定などです。そのため、ローカルで行ったような設定は基本的には必要ありません。

 必要な際は、クラスター立ち上げ時に詳細オプションで「ソフトウェア設定の編集」という項目で必要に応じて設定を追加することも可能です。とても便利ですね。

次回は、さらにEMRでのSparkの実践的な使い方

 以上、駆け足になりましたが、今回は簡単なアプリケーションをEMR上で動かすところまで説明しました。今回はアプリケーションを動かすことにフォーカスしましたが、次回はより実践的な部分に踏み込んでみたいと思いますので、お楽しみに。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。