开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段:Spark 集群搭建_高可用配置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/688/detail/11942
Spark 集群搭建_高可用配置
具体了解步骤如下:
(目标)简要了解如何使用 Zookeeper 帮助 Spark Standalone 高可用。
对于 Spark Standalone 集群,当 Worker 调度出现问题的时候,会自动的弹性容错,将出错的 Task 调度到其它 Worker 执行,但对于 Master 而言,会出现单点失败的情况,为避免此类问题, Spark 提供两种方式满足高可用:
①使用 Zookeeper 实现 Master 的主备切换
②使用文件系统做主备切换
主要介绍①使用 Zookeeper 实现 Master 的主备切换,
步骤如下:
一、Step1 停止 Spark 集群
二、Step2 修改配置文件,增加 Spark 运行时参数,从而指定 Zookeeper
的位置
三、Step3 分发配置文件到整个集群
四、Step4 启动
五、Step5 查看 node01 master 和 node02 master 的 WebUI
一、Step1 停止 Spark 集群
cd /export /servers /spark
sbin /stop-all.sh
(如图)
二、Step2 修改配置文件,增加 Spark 运行时参数,从而指定 Zookeeper 的位置
.进入 spark-env.sh 所在目录,打开 vi 编辑
cd /export /servers /spark /conf
vi spark-env.sh
.编辑 spark-env.sh,
添加 Spark 启动参数,并去掉 SPARK_HOST 地址
#指定Java Home
export JAVA HOME=/export/servers/jdk 1.8.0_ 141
#指定Spark Master地址
#export SPARK MASTER _HOST=node 01
export SPARK_ MASTER _PORT=7077
#指定Spark History运行参数
Export SPARK _HISTORY_OPTS=“Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=h
dfs://node01:8020/spark_log”
#指定Spark运行时参数
exportSPARK_DAEMON_JAVA_OPTS=-
Dspark.deploy.recoveryMode=
ZOOKEEPER-Dspark.deploy.zookeeper.url=node01:2181,node02:2181 ,
Node03:2181 -Dspark.deploy.zookeeper. dir=/spark”
(如图)
保存并退出配置文件。
三、Step3 分发配置文件到整个集群
cd/export/servers/spark/conf
scp spark-env. sh node 02:$PWD
scp spark-env. sh node 03:$PWD
(如图)
四、Step4 启动
.在 node01 上启动整个集群
cd/export/servers/spark
sbin/start-all.sh
sbin/start-history-server.sh
(如图)
.在 node02 上单独再启动一个 Master
cd/export/servers/spark
sbin/start-master.sh
(如图)
五、Step5查看 node01 master 和 node02 master 的 Web
UI
会发现一个是 ALIVE (主),另外一个是 STANDBY (备)
如果关闭一个,则另一个成为 “ALIVE” ,但这个过程可能持续两分钟作用,需要耐心等待。
#在 Node01 中执行如下指令
cd/export/servers/spark/
sbin/stop-master.sh
主备切换的核心原理即: Spark HA 选举
Spark HA 的 Leader 选举使用一个叫做 Curator 的 Zookeeper 客户端来进行。
Zookeeper 是一个分布式强一致性的协调服务, Zookeeper 最基本的一个保证是:
如果多个节点同时创建一个 ZNode, 只有一个能成功创建,这个做法的本质使用的是 Zookeeper 的 ZAB 协议,能够在分布式环境下达成一致。