如何为 Spark Standalone 的 master 指定自定义 conf 文件?
How to specify custom conf file for Spark Standalone's master?
每次启动 Spark Standalone 的 master 时,我都必须根据应用程序更改一组不同的配置 (spark-env.sh
)。截至目前,每次我需要 overwrite/change 其中的任何变量时,我都会编辑 spark-env.sh
。
有什么方法可以在执行 sbin/start-master.sh
时从外部传递 conf 文件?
我不太清楚您是要配置 spark 程序还是只是配置以在 shell 脚本中传递正确的参数。如果它是 shell 脚本,可能这不是正确的位置,但是在 spark 上设置配置文件非常棘手,这取决于您 运行 您的 spark 程序的方式和位置。如果你是客户端模式那么你可以在本地设置配置文件并根据你的spark程序(scala,python,java)传递到你的程序但是在集群模式下,它无法访问本地文件。
如果您只是想将配置参数传递给 spark 程序,您可以尝试以下示例
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 \
将 --properties-file
与自定义 Spark 属性 文件的路径一起使用。它默认为 $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 Alternate conf dir. Default is ${SPARK_HOME}/conf.
因此,使用 SPARK_CONF_DIR
并将自定义配置保存在 conf
下。
我刚刚注意到 spark-daemon.sh
脚本接受 --config <conf-dir>
所以看起来你可以使用 --config
而不是 SPARK_CONF_DIR
env var.
每次启动 Spark Standalone 的 master 时,我都必须根据应用程序更改一组不同的配置 (spark-env.sh
)。截至目前,每次我需要 overwrite/change 其中的任何变量时,我都会编辑 spark-env.sh
。
有什么方法可以在执行 sbin/start-master.sh
时从外部传递 conf 文件?
我不太清楚您是要配置 spark 程序还是只是配置以在 shell 脚本中传递正确的参数。如果它是 shell 脚本,可能这不是正确的位置,但是在 spark 上设置配置文件非常棘手,这取决于您 运行 您的 spark 程序的方式和位置。如果你是客户端模式那么你可以在本地设置配置文件并根据你的spark程序(scala,python,java)传递到你的程序但是在集群模式下,它无法访问本地文件。
如果您只是想将配置参数传递给 spark 程序,您可以尝试以下示例
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 \
将 --properties-file
与自定义 Spark 属性 文件的路径一起使用。它默认为 $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 Alternate conf dir. Default is ${SPARK_HOME}/conf.
因此,使用 SPARK_CONF_DIR
并将自定义配置保存在 conf
下。
我刚刚注意到 spark-daemon.sh
脚本接受 --config <conf-dir>
所以看起来你可以使用 --config
而不是 SPARK_CONF_DIR
env var.