Sparkの実行モードはStand Aloneモード、Master, Workerのデータ・ログはSSD領域を使用する設定で動作させます。
spark_on_abci.sh
は、ABCIで実行されるジョブの中でSparkの実行準備、終了処理を行う関数群を定義したファイル。
Sparkを使用するためには、そのファイルをジョブスクリプト内やシェル上で読み込みます。
Spark付属のPI計算のサンプルプログラムを実行する例。
Sparkの実行環境を構築する前(prepare_spark
呼び出し前)に、ジョブのバックグラウンドでSpark Workerを起動させ続ける時間を指定する必要がある。
以下の例ではジョブの最大実行時間に合わせている。
#!/bin/sh
#$-l rt_F=3
#$-cwd
#$-l h_rt=1:00:00
source ./spark_on_abci.sh
export SPARK_WORKER_RUNTIME=3600
prepare_spark
$SPARK_HOME/bin/spark-submit $SPARK_HOME/examples/src/main/python/pi.py 10
cleanup_spark
ジョブ実行終了後、標準出力、エラー出力に加えて、Sparkのログファイルが出力される。
spark-submit
がspark-shell
に変わっただけで、上記の処理とほぼ同じ手続きでSparkの実行準備、終了処理を行う。
[esX] $ qrsh -g gab50212 -ar 2625 -l rt_F=3 -l h_rt=05:00:00
[gXXXX] $ source spark_on_abci.sh
[gXXXX] $ export SPARK_WORKER_RUNTIME=3300
[gXXXX] $ prepare_spark
[gXXXX] $ spark-shell
...
[gXXXX] $ cleanup_spark
この
spark_on_abci.sh
を使う場合はなくても問題ありません。明示的に指定しても問題ありません。spark_on_abci.sh
のl.29でSpark Masterを実行していますが、qrshでリモートホスト実行指定していないため、ローカルホスト上で実行されます。このとき、バッチジョブ(
spark_submit.sh
)として実行する場合、spark_on_abci.sh
をsourceしたホスト上でMasterは実行されます。spark_submit.sh
のl.9のspark-submit
もspark_on_abci.sh
をsourceしたホスト上で実行されているため、デフォルトのMaster(local[*])に接続を試みます。実際にMasterはそこで動作しているため、問題なくMasterと通信できます。