2017-04-15 49 views
0

每次啓動Spark Standalone的主設備時,都必須根據應用程序更改一組不同的配置(spark-env.sh)。截至目前,我編輯spark-env.sh每次我需要覆蓋/更改任何變量。如何爲Spark Standalone的主人指定自定義conf文件?

有沒有辦法讓執行時sbin/start-master.sh我可以通過外部的conf文件?

+0

@summerbulb我正在尋找自定義配置來啓動主,而不是提交工作! spark-submit用於提交作業(啓動應用程序)。我關心的是啓動火花本身 – Sankalp

+0

爲什麼你會對反覆啓動和停止火花感興趣?我希望火花能持續運轉。 – summerbulb

+0

這個火花客戶端用於提交很多應用程序,我允許來自同一節點的多個主節點,這就是爲什麼 – Sankalp

回答

3

使用--properties-file與路徑嘗試定製星火性能文件。它默認爲$SPARK_HOME/conf/spark-defaults.conf

$ ./sbin/start-master.sh --help 
Usage: ./sbin/start-master.sh [options] 

Options: 
    -i HOST, --ip HOST  Hostname to listen on (deprecated, please use --host or -h) 
    -h HOST, --host HOST Hostname to listen on 
    -p PORT, --port PORT Port to listen on (default: 7077) 
    --webui-port PORT  Port for web UI (default: 8080) 
    --properties-file FILE Path to a custom Spark properties file. 
         Default is conf/spark-defaults.conf. 

然而,如果你想設置環境變量,你必須將它們設置爲你使用任何其他命令行應用程序做的,例如

SPARK_LOG_DIR=here-my-value ./sbin/start-master.sh 

一個想法是使用SPARK_CONF_DIR環境變量指向自定義目錄與所需的配置。

sbin/spark-daemon.sh(即作爲start-master.sh部分執行):

SPARK_CONF_DIR替代CONF DIR。缺省值是$ {SPARK_HOME}/conf。

因此,使用SPARK_CONF_DIR並將自定義配置保存在conf下。

我剛剛注意到spark-daemon.sh腳本接受--config <conf-dir>所以看起來你可以使用--configSPARK_CONF_DIR的環境變量。

+1

我現在使用你的建議和運行命令$ SPARK_CONF_DIR =/home/customConfigLocation/./sbin/start-master.sh我已經在customConfirLocation中放置了自定義的spark-config.sh。我用來啓動slave的類似命令。謝謝 – Sankalp

0

我不是很清楚你準備配置spark程序,或者只是配置在shell腳本中傳遞正確的參數。如果是shell腳本,可能這不是一個正確的地方,但是在火花上設置配置文件是非常棘手的,這是基於你如何以及在哪裏運行你的火花程序。如果你是cleint模式,那麼你可以在本地設置配置文件並根據你的spark程序(scala,python,java)傳入你的程序,但是在集羣模式下它不能訪問本地文件。

如果你正在尋找只是爲了配置參數傳遞到星火計劃,你可以按照下面的示例

spark-submit \ 
--driver-java-options "-XX:PermSize=1024M -XX:MaxPermSize=3072M" \ 
--driver-memory 3G \ 
--class com.program.classname \ 
--master yarn \ 
--deploy-mode cluster \ 
--proxy-user hdfs \ 
--executor-memory 5G \ 
--executor-cores 3 \ 
--num-executors 6 \ 
--conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 \ 
--conf spark.yarn.executor.memoryOverhead=2900 \ 
--conf spark.dynamicAllocation.enabled=true \ 
--conf spark.dynamicAllocation.initialExecutors=10 \ 
--conf spark.dynamicAllocation.maxExecutors=20 \ 
--conf spark.speculation=false \ 
--conf spark.dynamicAllocation.minExecutors=6 \ 
--conf spark.sql.shuffle.partitions=6 \ 

--conf spark.network.timeout=10000000 \ 
--conf spark.executor.heartbeatInterval=10000000 \ 
--conf spark.yarn.driver.memoryOverhead=4048 \ 
--conf spark.driver.cores=3 \ 
--conf spark.shuffle.memoryFraction=0.5 \ 
--conf spark.storage.memoryFraction=0.5 \ 
--conf spark.core.connection.ack.wait.timeout=300 \ 
--conf spark.shuffle.service.enabled=true \ 
--conf spark.shuffle.service.port=7337 \ 
--queue spark \ 
+0

有兩個部分,第一個啓動自動配置,第二個提交作業與主控與conf。你的解決方案是爲了稍後的一部分,而我正試圖在啓動Spark的同時尋求通過conf。 – Sankalp

相關問題