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
など )に対して、以下の環境変数を設定します。
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 を指定しない場合、環境変数 PATH に spark-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
配下には以下のようなディレクトリが作成されています。
ディレクトリ/ファイル | 説明 |
---|---|
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
正しく配置されている場合、それぞれ以下のように出力されます。
商品コード,商品名,部門コード,部門名,カテゴリコード,カテゴリ名,単価,登録日,適用開始日,適用終了日
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
店舗コード,名称
0000,スーパーあさくさ本社
0001,スーパーあさくさ品川店
0002,スーパーあさくさ渋谷店
0003,スーパーあさくさ平和島店
0004,スーパーあさくさ西新井店
日時,店舗コード,商品コード,数量,販売単価,販売金額
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
ここまでの手順でバッチアプリケーションを実行する準備ができました。 次のチュートリアルでデプロイしたバッチアプリケーションを実行していきます。