如何使用Zookeeper为HA设置Spark?

时间:2014-06-12 12:03:52

标签: apache-spark apache-zookeeper

我想配置 Apache spark 主服务器以连接 Zookeeper

我已经安装了它们并运行Zookeeper。

spark-env.sh 中,我添加了2行:

-Dspark.deploy.recoveryMode=ZOOKEEPER

-Dspark.deploy.zookeeper.url=localhost:2181

但是当我用 ./ sbin / start-all.sh

启动 Apache spark

显示错误

/home/deploy/spark-1.0.0/sbin/../conf/spark-env.sh: line 46: -Dspark.deploy.recoveryMode=ZOOKEEPER: command not found

/home/deploy/spark-1.0.0/sbin/../conf/spark-env.sh: line 47: -Dspark.deploy.zookeeper.url=localhost:2181: command not found

我想知道如何在spark-env.sh

上添加Zookeeper设置

2 个答案:

答案 0 :(得分:12)

很可能您已将这些行直接添加到文件中,如下所示:

export SPARK_PREFIX=`dirname "$this"`/..
export SPARK_CONF_DIR="$SPARK_HOME/conf"
...
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=localhost:2181

当start-all.sh调用时,bash会抱怨那些-Dspark...不是有效的命令。请注意,spark_config.sh是一个bash脚本,应该包含有效的bash表达式。

按照High Availability上的配置指南,您应该为SPARK_DAEMON_JAVA_OPTS设置以下选项:spark.deploy.recoveryModespark.deploy.zookeeper.urlspark.deploy.zookeeper.dir

使用您的数据,您需要向spark-conf.sh添加一行,如下所示:

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=localhost:2181"

答案 1 :(得分:1)

尝试在spark_env.sh中添加以下行

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=ZK1:2181,ZK2:2181,ZK3:2181 -Dspark.deploy.zookeeper.dir=/sparkha"

请用ZK仲裁主机和端口替换ZK1,ZK2和ZK3 而这里/ sparkha是ZK中用于spark的数据存储,默认情况下它将是/ spark 刚刚测试过,它对我们有用。 HTH