每次我启动 Spark Standalone 的 master 时,我都必须spark-env.sh
根据应用程序更改一组不同的配置 ()。到目前为止,我spark-env.sh
每次需要覆盖/更改其中的任何变量时都会进行编辑。
有没有办法让我在执行时sbin/start-master.sh
可以从外部传递 conf 文件?
每次我启动 Spark Standalone 的 master 时,我都必须spark-env.sh
根据应用程序更改一组不同的配置 ()。到目前为止,我spark-env.sh
每次需要覆盖/更改其中的任何变量时都会进行编辑。
有没有办法让我在执行时sbin/start-master.sh
可以从外部传递 conf 文件?
与自定义Spark 属性文件--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 备用配置目录。默认为 ${SPARK_HOME}/conf。
因此,使用SPARK_CONF_DIR
并保存自定义配置conf
。
我刚刚注意到spark-daemon.sh
脚本接受--config <conf-dir>
,所以看起来你可以使用--config
not SPARK_CONF_DIR
env var。
我不太清楚您是要配置 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 \