【问题标题】:How to pass custom SPARK_CONF_DIR to slaves in standalone mode如何在独立模式下将自定义 SPARK_CONF_DIR 传递给从站
【发布时间】:2019-09-07 03:39:55
【问题描述】:

我正在共享集群环境中安装 Spark。我们决定使用 spark 独立模式,并使用 sbin 中包含的“start-all.sh”命令来启动 Spark 工作程序。由于集群的共享架构,SPARK_HOME 位于用户不可写的公共目录中。因此,我们在用户的临时目录中创建了“运行”目录,可以将 SPARK_CONF_DIR、日志目录和工作目录指向其中。

问题是 SPARK_CONF_DIR 从未在工作节点上设置,因此它们默认为 $SPARK_HOME/conf,它只有模板。我想要做的是通过 SPARK_CONF_DIR 从主节点传递到从节点。我已经确定了一个解决方案,但它需要 sbin/start-slaves.sh 的补丁:

sbin/start_slaves.sh

46c46
< "${SPARK_HOME}/sbin/slaves.sh" cd "${SPARK_HOME}" \; export SPARK_CONF_DIR=${SPARK_CONF_DIR} \; "$SPARK_HOME/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT"
---
> "${SPARK_HOME}/sbin/slaves.sh" cd "${SPARK_HOME}" \; "${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT"

这里有没有更好的解决方案,不需要修补 Spark 源代码?

当然,一种解决方案是复制并重命名 start-all.sh 和 start-slaves.sh 并使用它们来代替 sbin/start-all.sh。但是还有什么更优雅的吗?

感谢您的宝贵时间。

【问题讨论】:

  • 为什么不通过你的程序设置你的 SPARK_CONF_DIR 呢?
  • 这是在用户程序启动之前发生的。我相信 spark-submit 可以启动任务,但执行程序已经在运行。是否可以通过用户程序启动执行器?

标签: apache-spark


【解决方案1】:

如果你想运行独立模式,你可以尝试在你的程序上设置 SPARK_CONF_DIR。以pyspark为例:

import os
from pyspark.sql import SparkSession

os.environ["SPARK_CONF_DIR"] = "/path/to/configs/conf1"
spark  = SparkSession.builder.getOrCreate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多