Я успешно настроил zookeeper и spark в 3 разных виртуальных коробках. Запуск zookeeper и spark master не проблема.
с IP-адресом на /etc/hosts
192.168.1.10 master1
192.168.1.11 master2
192.168.1.12 master3
После запуска моих рабов (искровых работников) для подключения к моим мастерам, используя код ниже на всех машинах.
./sbin/start-slave.sh spark://master1:7077,master2:17077,master3:7077
«Ведомые» (рабочие-искры) успешно подключены к первому мастеру, но когда я убиваю или останавливаю активный мастер, запускает восстановление, но после восстановления активен только работник, имеющий тот же IP-адрес текущего мастера, оставив других рабочих мертвыми и убитыми через несколько минут.
Местоположение проекта: /usr/local/
под пользователем spuser
Все необходимые порты открываются через
sudo firewall-cmd --zone=public --add-port=<port_number>/tcp --permanent
Конфиги Spark
У меня тоже есть /usr/local/spark/highavability.conf
spark.deploy.recoveryMode=ZOOKEEPER
spark.deploy.zookeeper.url=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181
spark.deploy.zookeeper.dir=/usr/local/spark/spark
и запуск мастера с использованием на всех машинах
./sbin/start-master.sh -h <master_ip> -p 7077 --webui-port 8080 --properties-file ha.conf
в другом примечании, вставка этого кода в /usr/local/spark/conf/spark-env.sh
делает то же самое, что и код выше
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/home/usr/local/spark/spark"
Zookeeper Configs
У меня есть этот на /usr/local/zookeeper/conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/home/dd/zookeeper/data/
# the port at which the clients will connect
clientPort=2181
dataLogDir=/home/dd/zookeeper/logs/
server.1=master1:2888:3888
server.2=master2:2889:3889
server.3=master3:2890:3890
Ожидается, что все работники должны быть подключены и иметь статус alive
к вновь избранному мастеру, но только работник с тем же IP-адресом подключен и имеет статус alive
.