修改spark-env.sh
配置文件
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=centos01:2181,centos02:2181,centos03:2181 -Dspark.deploy.zookeeper.dir=/spark"
spark.deploy.zookeeper.url
:指定ZooKeeper集群各节点的主机名与端口spark.deploy.zookeeper.dir
:指定Spark在ZooKeeper中注册的znode节点名称
同步配置文件
scp conf/spark-env.sh hadoop@centos02:/opt/modules/spark-2.4.0-bin-hadoop2.7/conf/
scp conf/spark-env.sh hadoop@centos03:/opt/modules/spark-2.4.0-bin-hadoop2.7/conf/
启动ZooKeeper集群
在三台服务器上:
bin/zkServer.sh start
启动Spark集群
centos01
:
sbin/start-all.sh
centos02
:
sbin/start-all.sh
查看各节点进程
测试Spark HA
进入Spark Web界面查看两个Master的状态,此时centos01
节点Master的状态为ALIVE,(即active活动状态):
centos02
节点Master的状态为STANDBY状态,(即备用状态):
使用 kill -9 命令杀掉centos01
节点的Master进程,稍等几秒后多次刷centos02
节点的Web界面,发现Master的状态由STANDBY状态变为RECOVERING(恢复,该状态持续的时间非常短暂),最后变为ALIVE:
此时,若需要连接Spark集群执行操作,--master
参数的连接地址需要改为spark://centos02:7077
:
bin/spark-shell --master spark://centos02:7077