Как настроить Spark с Zookeeper для HA?

Я хочу настроить Apache spark master для подключения к Zookeeper

Я установил их оба и запустил Zookeeper.

В spark-env.sh я добавляю 2 строки:

-Dspark.deploy.recoveryMode=ZOOKEEPER

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

Но когда я начинаю искры Apache с ./sbin/start-all.sh

Он показывает ошибки

/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

Я хочу знать, как добавить настройки Zookeeper на spark-env.sh

Ответ 1

Скорее всего, вы добавили эти строки непосредственно в файл следующим образом:

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.

Следуя руководству по настройке при высокой доступности, вы должны установить SPARK_DAEMON_JAVA_OPTS с параметрами: spark.deploy.recoveryMode, spark.deploy.zookeeper.url и spark.deploy.zookeeper.dir.

Используя ваши данные, вам нужно добавить строку в spark-conf.sh следующим образом:

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

Ответ 2

Попробуйте добавить строку ниже в 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"

Пожалуйста, замените ZK1, ZK2 и ZK3 на хосты и порт кворума ZK, и здесь /sparkha - это хранилище данных в ZK для искры, bu по умолчанию это будет /spark. Только что протестировано, оно сработало для нас. НТН