24. Spark環境へのデプロイ

このチュートリアルでは、Spark環境に対してAsakusa Frameworkのバッチアプリケーション実行環境一式をデプロイする方法を説明していきます。

24.1. 前提環境

24.1.1. SparkとHadoop環境

以降の説明では、Asakusa Frameworkの実行環境となるSpark環境、及びHadoop環境が準備済みであることを前提とします。

Sparkのセットアップについては、Sparkのドキュメントや利用するHadoopディストリビューションのドキュメント等を参考にして下さい。 またAsakusa Frameworkが動作検証を行っている各プラットフォームのバージョン詳細などは 関連ドキュメント を参照してください。

24.1.2. OSユーザ

Spark環境に対して、Asakusa Frameworkのバッチアプリケーション実行環境一式をデプロイして実行するためのOSユーザを準備します。

ユーザの具体的な作成手順はここでは省略しますので、利用するOSが提供する方法に従ってユーザを準備してください。

このユーザは以下の条件を満たしているものとします。

  • Sparkが提供する各コマンドが実行可能
  • Hadoopが提供する各コマンドが実行可能
  • Hadoopファイルシステム上に、このユーザに対応するホームディレクトリが作成されている

24.2. 環境変数の設定

Asakusa Frameworkのバッチアプリケーションを実行するには、以下の環境変数が設定されている必要があります。

環境変数の設定
環境変数 説明
JAVA_HOME JDKのインストールパス
SPARK_CMD spark-submit コマンドのパス [1]
ASAKUSA_HOME Asakusa Frameworkのインストールパス

ここでは、OSユーザーのログインプロファイル( ~/.bash_profile など )に対して、以下の環境変数を設定します。

~/.bash_profile
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SPARK_CMD=/opt/spark/bin/spark-submit
export ASAKUSA_HOME=$HOME/asakusa

以降の手順を実施するため、カレントシェルに対してプロファイルを適用しておきます。

source ~/.bash_profile
[1]環境変数 SPARK_CMD を指定しない場合、環境変数 PATHspark-submit コマンドのパスが含まれていればこれを利用します。

24.3. デプロイメントアーカイブの配置

Asakusa Framework実行環境をデプロイするマシンに デプロイ用パッケージの作成 で作成した開発環境上のデプロイメントアーカイブファイルを配置します。

ここでは $HOME/archive というディレクトリにデプロイメントアーカイブファイル asakusafw-asakusa-tutorial.tar.gz を配置したものとします。

24.4. デプロイメントアーカイブの展開

$ASAKUSA_HOME 配下にデプロイメントアーカイブの内容を展開します。 展開後、 $ASAKUSA_HOME 配下の *.sh に実行権限を追加します。

mkdir -p "$ASAKUSA_HOME"
cd "$ASAKUSA_HOME"
tar -xf $HOME/archive/asakusafw-asakusa-tutorial.tar.gz
java -jar $ASAKUSA_HOME/tools/bin/setup.jar

Attention

$ASAKUSA_HOME/tools/bin/setup.jar を実行する手順は Asakusa Framework バージョン 0.10.0 より追加されました。

バージョン 0.9以前では、この部分は find "$ASAKUSA_HOME" -name "*.sh" | xargs chmod u+x のようなコマンドを実行していましたが、 バージョン 0.10.0 から展開後のファイル拡張子が変更されたため、この手順では正しくセットアップすることができません。

そのためバージョン 0.10.0 以降は必ず上記のように $ASAKUSA_HOME/tools/bin/setup.jar を実行してセットアップを行ってください。

デプロイが正常に実行された場合、 ASAKUSA_HOME 配下には以下のようなディレクトリが作成されています。

デプロイメント構成 - ASAKUSA_HOME
ディレクトリ/ファイル 説明
VERSION バージョン情報を含むファイル
batchapps バッチアプリケーションの配置ディレクトリ
core Asakusa Framework実行ライブラリの配置ディレクトリ
directio Direct I/Oの実行モジュール及びツールの配置ディレクトリ
example-dataset テストデータの配置ディレクトリ
ext 拡張モジュール用の配置ディレクトリ
spark Asakusa on Sparkの実行モジュール及びツールの配置ディレクトリ
tools 運用ツールの配置ディレクトリ
windgate WindGateの実行モジュール配置ディレクトリ
windgate-ssh WindGateの実行モジュール配置ディレクトリ
yaess YAESSの実行モジュール配置ディレクトリ
yaess-hadoop YAESSの実行モジュール配置ディレクトリ

24.5. テストデータの配置

デプロイ用パッケージの作成 の手順では、デプロイメント構成にバッチアプリケーション疎通確認用のテストデータを example-dataset ディレクトリに含めました。 このテストデータをDirect I/Oの入力ディレクトリに配置します。

Direct I/Oのデフォルト設定では、入力ディレクトリはHadoopファイルシステム上のホームディレクトリ配下の target/testing/directio ディレクトリに設定されています。

ここではDirect I/Oのデフォルト設定に合わせてテストデータを配置します。

hadoop fs -mkdir -p target/testing/directio
hadoop fs -put $ASAKUSA_HOME/example-dataset/master target/testing/directio/master
hadoop fs -put $ASAKUSA_HOME/example-dataset/sales target/testing/directio/sales

テストデータが正しく配置されているかを確認します。

hadoop fs -text target/testing/directio/master/item_info.csv
hadoop fs -text target/testing/directio/master/store_info.csv
hadoop fs -text target/testing/directio/master/store_info.csv

正しく配置されている場合、それぞれ以下のように出力されます。

master/item_info.csv
商品コード,商品名,部門コード,部門名,カテゴリコード,カテゴリ名,単価,登録日,適用開始日,適用終了日
4922010001000,ミルクチョコレートM,110,菓子,1600,チョコレート菓子,120,2010-04-01,2010-04-01,2019-12-31
4922010001001,PREMIUM アソートチョコレート,110,菓子,1600,チョコレート菓子,330,2010-04-01,2010-04-01,2019-12-31
4922010001002,アーモンドクランチミニ,110,菓子,1600,チョコレート菓子,140,2010-04-01,2010-04-01,2019-12-31
4922020002000,カップ麺 しょうゆ,130,一般食品,1401,カップ麺,98,2010-04-01,2010-04-01,2019-12-31
4922020002001,カップ麺 塩,130,一般食品,1401,カップ麺,98,2010-04-01,2010-04-01,2019-12-31
4922020002002,カップ麺 カレー,130,一般食品,1401,カップ麺,98,2010-04-01,2010-04-01,2019-12-31
4922030003000,カップアイス 夕張メロン,110,菓子,1300,アイスクリーム,100,2010-04-01,2010-04-01,2019-12-31
4922030003001,抹茶サンデー,110,菓子,1300,アイスクリーム,178,2010-04-01,2010-04-01,2019-12-31
4922030003002,ロックアイス いちご味,110,菓子,1300,アイスクリーム,128,2010-04-01,2010-04-01,2019-12-31
master/store_info.csv
店舗コード,名称
0000,スーパーあさくさ本社
0001,スーパーあさくさ品川店
0002,スーパーあさくさ渋谷店
0003,スーパーあさくさ平和島店
0004,スーパーあさくさ西新井店
sales/2011-04-01.csv
日時,店舗コード,商品コード,数量,販売単価,販売金額
2011-04-01 10:30:00,0001,4922010001000,3,120,360
2011-04-01 10:31:00,0001,4922010001001,2,330,660
2011-04-01 10:32:00,0001,4922010001000,2,120,240
2011-04-01 10:32:00,0001,4922010001000,1,120,120
2011-04-01 10:33:00,0002,4922010001002,1,140,140
2011-04-01 10:34:00,0001,4922020002000,2,98,196
2011-04-01 10:35:00,0001,4922020002000,3,98,294
2011-04-01 10:36:00,0002,4922020002001,1,98,98
2011-04-01 10:37:00,0001,4922030003000,2,100,200
2011-04-01 10:38:00,0003,4922020002000,1,98,98
2011-04-01 10:39:00,0002,4922010001002,1,140,140
2011-04-01 10:40:00,0001,4922020002000,1,98,98
2011-04-01 10:40:00,0001,4922010001000,2,120,240
2011-04-01 10:41:00,0001,4922010001001,2,330,660
2011-04-01 10:42:00,0001,4922010001002,1,140,140
2011-04-01 10:43:00,0002,4922020002000,1,98,98
2011-04-01 10:44:00,0001,4922020002001,1,98,98
2011-04-01 10:45:00,0004,4922020002002,2,98,196
2011-04-01 10:46:00,0002,4922030003000,2,100,200
2011-04-01 10:47:00,0001,4922030003001,3,178,534
2011-04-01 10:48:00,0003,4922030003002,3,128,384
2011-04-01 10:30:00,0001,4922010001000,3,120,360
2011-04-01 10:31:00,0001,4922010001001,3,330,660
2011-04-01 10:32:00,0001,4922010001000,1,120,120
2011-04-01 10:32:00,0001,4922010001000,2,120,240
2011-04-01 10:33:00,0002,4922010001001,2,330,660
2011-04-01 20:34:00,0001,4922030003001,1,178,178
2011-04-01 20:35:00,0001,4922030003000,1,100,100
2011-04-01 20:36:00,0002,4922020002002,1,98,98
2011-04-01 20:37:00,0001,4922010001001,2,330,660
2011-04-01 20:38:00,0003,4922020002000,2,98,196
2011-04-01 19:00:00,9999,4922010001000,1,120,120
2011-04-01 10:00:00,0001,9999999999999,2,256,512
1990-01-01 10:40:00,0001,4922010001000,1,120,120

ここまでの手順でバッチアプリケーションを実行する準備ができました。 次のチュートリアルでデプロイしたバッチアプリケーションを実行していきます。