1.6の時に存在した spark-assembly-1.6.2-hadoop2.6.0.jar のような事前に準備されたuber jarは廃止された模様。
また、spark.yarn.jar パラメータも廃止された模様
その代わり、以下の設定を行う
-
spark.yarn.archive
に jarが含まれているhdfsのパスを記述する - または、
spark.yarn.jars
に jar ファイルのリストを記述する
優先順位としては
spark.yarn.archive
-
spark.yarn.jars
の順序であり
上記のいずれも設定されていない場合は $SPARK_HOME/jars 内のファイルをzip化して勝手にhdfs上にアップロードして配信してくれる。
但し、毎回アップロードが走るため少し無駄が多い。
あらかじめ、事前にhdfs上にアップロードしておくことができればこの無駄な時間を削減できるが、それを行うのがspark.yarn.archive
やspark.yarn.jars
であると言える。
例えば hdfs:///spark
にsparkのjarをアップロードする場合。
事前準備
# spark jarのアップロード
$hdfs dfs -put $SPARK_HOME/jars /spark
# アップロードされていることの確認
$hdfs dfs -ls /spark
方法1 spark.yarn.archive
に jarのパスを書く
$SPARK_HOME/conf/spark-defaults.conf
spark.yarn.archive hdfs:///spark
方法2 spark.yarn.jars
に jarファイルのリストを記述する
$SPARK_HOME/conf/spark-defaults.conf
spark.yarn.jars hdfs:///spark/*
動作確認(SparkPi)
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
$SPARK_HOME/examples/jars/spark-examples*.jar \
10