spark高可用集群的搭建

1 两种解决方案

1基于文件系统的单点恢复,主要用于开发或者测试环境,spark提供目录保存spark application和worker的注册信息,并将它们的恢复状态写入该目录中。一旦master发生故障,就可以通过重新启动master进程(sbin/start-master.sh),恢复已运行的spark application和worker的注册信息。

2基于zookeeper的standby masters:通过zk来选举一个master,其他master处于standby状态。整个选举恢复需要2-3分钟。

3.3.1  前提条件

依赖zk,需要提前搭建zk集群

3.3.2  搭建步骤

在node1上修改 spark-env.sh文件

Vim spark-env.sh

#手动注释掉配置的master地址

#export SPARK_MASTER_HOST=node1

#引入zk 构建高可用spark集群

Export SPARK_DAEMON_JAVA_OPTS=”-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=nodel:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark”

#将配置分发到其他节点上

Scp spark-env.sh node2:/exprot/servers/spark/conf

Scp spark-env.sh node3:/export/servers/spark/conf

#启动高可用脚本

  1. 启动zk集群,编写启动脚本start-all-nodes.sh

#!/bin/sh

For host in nod1 node2 node3

Do

Ssh $host source /etc/profile:nohup zkServer.sh start > /dev/null 2>&1&

Echo $host zk is running

Done

#启动自定的脚本(前提是要实现任意2台机器之间的ssh免密码登录)

Start-all-nodes.sh

说明:你在那台机器执行这个文件,它就会在当前机器启动一个master进程。

     整个spark集群中的woker进程的启动有slavers文件决定

#单独启动master进程

Start-master.sh

#高可用的总结:

这个时候引入zk,构建一个高可用的spark集群,在这里就有很多个master,其中有一个master被选举成活着的master,其他的多个master都处理standby,活着的master会提供服务,处理standby中的master不会提供服务,同时也把整个spark集群的元数据信息通过zk集群中的“/spark”节点去保存。

如果此时活着的master挂掉了,首先zk会感知到,然后在所有处理standby中的master进行选举,最后产生一个新的活着的master,这个新的活着的master会读取到zk集群中保存spark集群元数据信息的节点,最后恢复到上一次挂掉的状态。整个恢复阶段需要一定时间,大约1-2分钟。

Start-dfs.sh  启动hdfs。

3.4 集群master挂掉的影响

1.对正在运行的任务有没有影响?

没有,既然任务正在运行,就说明它是已经获取得到了资源,既然有了资源,就不需要master了,继续运行就可以了。

2.对于在恢复阶段提交的任务有没有影响?

有,对于这个任务来说,由于整个spark集群没有这样一个活着的master存在,任务也就分配不到计算资源,这个任务那不到资源,任务就无法执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值