Spark HA高可用集群搭建(Standalone模式)

  Spark HA搭建

Spark Standalone和大部分Master/slave模式一样,都存储Master单点故障问题,解决方式可以基于Zookeeper实现两个Master无缝切换,类似HDFS的NameNode HA(High Availability,高可用)或者YARN的ResourceManager HA。

    Spark可以在集群中启动多个Master,并使它们都向Zookeeper进行注册,Zookeeper利用自己的选举机制保证同一时间只有一个Master是活动状态(active)的,其他的都是备用状态(standby)。

当活动状态的Master出现故障时,Zookeeper会从其他备用状态的Master选出一台成为活动的Master,整个恢复过程大约在1分钟。对应恢复期间正在运行的程序,由于应用程序在运行前已经向Master申请了资源,运行是Driver负责与Excecutor进行通讯,管理整个应用程序,因此Master的故障对应用程序的运行不会产生影响,但是会影响新应用程序的提交。

以Spark Standalone模式的client运行方式为例,其HA的架构

                              

接下来我们安装已经搭建好的Spark Standalone集群进行Spark HA的搭建,搭建的角色分配如下                    Spark HA集群角色分配

节点

角色

centoshadoop1

Master

 

centoshadoop2

Master

Worker

centoshadoop3

Worker

centoshadoop4

Worker

修改配置文件spark-env.sh

在centoshadoop1节点中修改Spark-env.sh配置文件,删除其中的SPARK_MASTER_IP属性配置,添加以下配置:

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1:2181,node-2:2181,node-3:2181 -Dspark.deploy.zookeeper.dir=/spark"

上述配置参数解析如下:

spark.deploy.zookeeper.url: 指定Zookeeper集群各节点的主机名与端口

spark.deploy.zookeeper.dir: 指定Spark在Zookeeper中注册的znode节点名称

然后同步修改后的配置文件到集群其他节点,命令如下:

cd /home/hadoop/spark/spark-2.4.5-bin-hadoop2.7/conf

scp -r spark-env.sh

hadoop@centoshadoop2:/home/hadoop/spark/spark-2.4.5-bin-hadoop2.7/conf/

scp -r spark-env.sh

hadoop@centoshadoop2:/home/hadoop/spark/spark-2.4.5-bin-hadoop2.7/conf/

 

scp -r spark-env.sh

hadoop@centoshadoop2:/home/hadoop/spark/spark-2.4.5-bin-hadoop2.7/conf/

 

启动Zookeeper集群及Spark集群

在centoshadoop1节点进入Spark安装目录,启动Spark集群,命令如下:

sbin/start-all.sh

需要注意的是,在那个节点上启动spark集群,活动状态的master就存在于那个节点上。

在centoshadoop2节点上进入Spark安装目录,启动第二个Master(备用状态Master),命令如下:

sbin/start-master.sh

jps查看各个节点的进程是否存在

 

测试Spark HA

进入Spark Web界面查看两个Master的状态,此时centoshadoop1的节点状态为ALIVE(即是活动状态active)

http://IP:8080/

                                           

Centoshadoop2节点Master的状态为STANDBY(备用状态)

http://IP:8080/

                                            

在节点一centoshadoop1上停止master进程,稍等几秒后多次刷新centoshadoop2节点的Web界面,发现Master的状态有STANDBY首先变为RECOVERING(恢复,该状态持续时间非常短暂),最后变为ALIVE,如下图:

                                                    

                                                                                                   RECOVERING状态的Master

                                                     

                                                                                                      ALIVE状态的Master

到此,Spark HA搭建完成

此时,若需要连接Spark集群执行操作,--master参数的连接地址需改为spark://centoshadoop2:7077

例如以下代码: 在节点一或者节点二上执行

firewall-cmd --zone=public --add-port=7077/tcp --permanent

firewall-cmd --reload

bin/spark-shell \

--master spark://centoshadoop2:7077

                                                                                  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值