每次啓動Spark Standalone的主設備時,都必須根據應用程序更改一組不同的配置(spark-env.sh
)。截至目前,我編輯spark-env.sh
每次我需要覆蓋/更改任何變量。如何爲Spark Standalone的主人指定自定義conf文件?
有沒有辦法讓執行時sbin/start-master.sh
我可以通過外部的conf文件?
每次啓動Spark Standalone的主設備時,都必須根據應用程序更改一組不同的配置(spark-env.sh
)。截至目前,我編輯spark-env.sh
每次我需要覆蓋/更改任何變量。如何爲Spark Standalone的主人指定自定義conf文件?
有沒有辦法讓執行時sbin/start-master.sh
我可以通過外部的conf文件?
使用--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>
所以看起來你可以使用--config
不SPARK_CONF_DIR
的環境變量。
我現在使用你的建議和運行命令$ SPARK_CONF_DIR =/home/customConfigLocation/./sbin/start-master.sh我已經在customConfirLocation中放置了自定義的spark-config.sh。我用來啓動slave的類似命令。謝謝 – Sankalp
我不是很清楚你準備配置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 \
有兩個部分,第一個啓動自動配置,第二個提交作業與主控與conf。你的解決方案是爲了稍後的一部分,而我正試圖在啓動Spark的同時尋求通過conf。 – Sankalp
@summerbulb我正在尋找自定義配置來啓動主,而不是提交工作! spark-submit用於提交作業(啓動應用程序)。我關心的是啓動火花本身 – Sankalp
爲什麼你會對反覆啓動和停止火花感興趣?我希望火花能持續運轉。 – summerbulb
這個火花客戶端用於提交很多應用程序,我允許來自同一節點的多個主節點,這就是爲什麼 – Sankalp