【Spark集群部署系列三】Spark StandAlone HA模式介绍和搭建以及使用

简介:

Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master
单点故障(SPOF)的问题。

高可用HA

如何解决这个单点故障的问题,Spark提供了两种方案:
1.基于文件系统的单点恢复(Single-Node Recovery with Local File System)--只能用于开发或测试环境。
2.基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)--可以用于生产环境。
ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active
的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息
,包括Worker, Driver和Application的信息都已经持久化到文件系统,因此在切换的过程中只会影响新Job的提交,对
于正在进行的Job没有任何的影响。加入ZooKeeper的集群整体架构如下图所示。

基于Zookeeper实现HA 

前提

 确保Zookeeper 和HDFS已经启动,已经部署好Spark StandAlone(没有就运行不了)HDFS集群搭建icon-default.png?t=N7T8http://t.csdnimg.cn/Re8MVZookeeper集群搭建icon-default.png?t=N7T8http://t.csdnimg.cn/LlZEMSpark StandAloneicon-default.png?t=N7T8http://t.csdnimg.cn/idwKA

hdfs,zookeeper启动命令 :

start-dfs.sh    # hdfs,注意最高权限用户

su - 用户名      # 切换用户
/export/server/zookeeper/bin/zkServer.sh start     # Zookeeper启动,注意路径

 用Spark最高权限用户,本教程用的是hadoop用户(应该没问题!)

su - hadoop

修改配置文件 

 切换到spark conf目录下

cd /export/server/spark/conf     #注意路径

编辑spark-env.sh

vim spark-env.sh

最后在末尾添加如下内容,可以不加注释 

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
# spark.deploy.recoveryMode 指定HA模式 基于Zookeeper实现
# 指定Zookeeper的连接地址
# 指定在Zookeeper中注册临时节点的路径

 

:wq

分发配置文件文件到其他机器

scp spark-env.sh node2:`pwd`/
scp spark-env.sh node3:`pwd`/

启动HA模式 

如果启动了spark,关闭Spark StandAlone集群 (之前没启动不需要管)

cd ..

(以下命令以sbin开头的都是在/export/server/spark目录下执行) 

sbin/stop-all.sh

 在node1机器执行

sbin/start-all.sh

在其他机器启动备用Master,这里用node2举例

sbin/start-master.sh

 注意:我并没有启动yarn,只是启动了HDFS,Spark,Zookeeper,以及历史服务器

node1 

 

node2

 

node3

 WebUI查看

通常Zookeeper先启动,会占用8080端口,所以Master会向后延申置8081,产看端口参考

netstat -anp | grep 进程号      # 进程号看jps

 下图为node2机器的截图作为举例,node1是一样的。 

也可以通过查看日志看端口位置

cd  logs/         # 完整路径/export/server/spark/logs
ll
tail spark-hadoop-org.apache.spark.deploy.master.Master-1-node2.out

 WebUI界面

 

 HA Master主备切换

先在node1输入,切记别回车

kill -9 进程号  # node1机器Master进程号,通过jps查看

 node2,执行

bin/spark-submit --master spark://node1:7077 /export/server/spark/examples/src/main/python/pi.py 10    # 迭代次数根据机器配置

 产看node1Master的web UI,游览器输入

node1:8081    #具体端口号,上面教了怎么看,往上翻。

node2 web UI,刷新直到出现下面图片的样子,主备切换成功。

node2:8082    #具体端口号,上面教了怎么看,往上翻。

最后恢复 node1的Master 进程,保持有主有备就行。如果非要换回来,杀了node2再复活吧!

sbin/start-master.sh

 OK ! 结束。

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值