如何为Spark Standalone的master指定自定义conf文件?

时间:2017-04-15 19:50:53

标签: apache-spark apache-spark-standalone

每次启动Spark Standalone的master时,我都需要根据应用程序更改一组不同的配置(spark-env.sh)。截至目前,我每次需要覆盖/更改其中的任何变量时都会编辑spark-env.sh

有没有办法在执行sbin/start-master.sh时我可以在外部传递conf文件?

2 个答案:

答案 0 :(得分:4)

--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替代配置目录。默认为$ {SPARK_HOME} / conf。

因此,请使用SPARK_CONF_DIR并在conf下保存自定义配置。

我刚注意到spark-daemon.sh脚本接受了--config <conf-dir>,因此看起来您可以使用--config而不是SPARK_CONF_DIR env var。

答案 1 :(得分:1)

我不太清楚您是否正在寻找配置spark程序或只是配置为在shell脚本中传递正确的参数。如果它是shell脚本可能这不是一个正确的地方,但是在spark上设置配置文件非常棘手,这取决于你运行spark程序的方式和位置。如果你是cleint模式,那么你可以在本地设置配置文件并根据你的spark程序(scala,python,java)传入你的程序,但在集群模式下它无法访问本地文件。

如果您只想将配置参数传递给spark程序,可以尝试以下示例

index