首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2021年大数据Spark(八):环境搭建集群模式 Standalone HA

2021年大数据Spark(八):环境搭建集群模式 Standalone HA

作者头像
Lansonli
发布2021-10-09 17:21:09
发布2021-10-09 17:21:09
63500
代码可运行
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客
运行总次数:0
代码可运行

环境搭建-Standalone HA

高可用HA

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

如何解决这个单点故障的问题,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

官方文档:http://spark.apache.org/docs/2.4.5/spark-standalone.html#standby-masters-with-zookeeper

先停止Sprak集群

/export/server/spark/sbin/stop-all.sh

在node01上配置:

vim /export/server/spark/conf/spark-env.sh

注释或删除MASTER_HOST内容:

代码语言:javascript
代码运行次数:0
运行
复制
# SPARK_MASTER_HOST=node1

增加如下配置

代码语言:javascript
代码运行次数:0
运行
复制
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"

参数含义说明:

代码语言:javascript
代码运行次数:0
运行
复制
spark.deploy.recoveryMode:恢复模式

spark.deploy.zookeeper.url:ZooKeeper的Server地址

spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。包括Worker、Driver、Application信息。

  将spark-env.sh分发集群

代码语言:javascript
代码运行次数:0
运行
复制
cd /export/server/spark/conf

scp -r spark-env.sh root@node2:$PWD

scp -r spark-env.sh root@node3:$PWD

 启动集群服务

启动ZOOKEEPER服务

zkServer.sh status

zkServer.sh stop

zkServer.sh start

node1上启动Spark集群执行

/export/server/spark/sbin/start-all.sh

在node2上再单独只起个master:

/export/server/spark/sbin/start-master.sh

查看WebUI

http://node1:8080/

http://node2:8080/

测试运行

测试主备切换

1.在node1上使用jps查看master进程id

2.使用kill -9 id号强制结束该进程

3.稍等片刻后刷新node2的web界面发现node2为Alive

代码语言:javascript
代码运行次数:0
运行
复制
sc.textFile("hdfs://node1:8020/wordcount/input/words.txt")

.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

.saveAsTextFile("hdfs://node1:8020/wordcount/output3")

如启动spark-shell,需要指定多个master地址

/export/server/spark/bin/spark-shell --master spark://node1:7077,node2:7077

停止集群

/export/server/spark/sbin/stop-all.sh

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境搭建-Standalone HA
    • 高可用HA
    • 基于Zookeeper实现HA
      • 先停止Sprak集群
    • 测试运行
      • 测试主备切换
      • 停止集群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档