Spark應用開發如何設定配置生效

在寫Spark應用時,可以添加應用配置的地方有三個,今天總結下方便記憶:

第一個地方,也是生效優先級最高的地方,是在應用程序代碼裏設定配置,示例如下:

val conf = new SparkConf()
             .setAppName("myApp")
val sc = new SparkContext(conf)

第二個地方,是在提交應用時。因爲有時候我們不想把配置參數寫成hard code,所以可以在代碼裏創建一個空SparkConf對象,提交應用的時候通過--conf來添加配置參數:

./bin/spark-submit --name "myApp" --master yarn-client --conf spark.eventLog.enabled=false myApp.jar

第三個地方,可以在spark-env.sh裏設置,其實就是添加程序的環境變量,具體可以設置哪些變量請參考spark-env.sh模版。注意,spark-env.sh是在spark集羣啓動時被調用,所以我的理解是這個針對standalone集羣有效。

 還有一個變相的辦法,可以自己寫一個spark應用提交的腳本,在spark-submit執行前先設定好想賦值的環境變量,效果是一樣的,這個應該更針對yarn-client或yarn-cluster模式。進一步猜測,如果把spark相關的環境變量設在yarn-env.sh裏,重啓yarn後提交spark應用是否有效?請路過的同學指正。

默認情況下,spark應用會自動加載$SPARK_HOME/conf/spark-default.properties。我們可以在spark-env.sh或者我們自己的啓動腳本中通過SPARK_CONF_DIR改變默認的配置文件路徑;也可以通過HADOOP_CONF_DIR 改變默認的HADOOP配置文件路徑。

特別需要指出的是: Spark Standalone模式以及Mesos模式中,master的地址由"master"參數指定,而在YARN模式下,ResourceManager的地址從Hadoop配置得到。因此master參數是簡單的yarn-client和yarn-cluster。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章