spark环境安装之HA 高可用

高可用部署说明

(提醒一下这个是基于单master的)

Spark Standalone 集群是 Master-Slaves 架构的集群模式,和大部分的
Master-Slaves 结构集群一样,存在着 Master 单点故障的问题。如何解决这个
单点故障的问题,Spark 提供了两种方案:
(1)基 于 文 件 系 统 的 单 点 恢 复 (Single-Node Recovery with Local File
System)。
主要用于开发或测试环境。当 spark 提供目录保存 spark Application
和 worker 的注册信息,并将他们的恢复状态写入该目录中,这时,一旦 Master
发生故障,就可以通过重新启动 Master 进程(sbin/start-master.sh),恢复
已运行的 spark Application 和 worker 的注册信息。

(2)基于 zookeeper 的 Standby Masters(Standby Masters with ZooKeeper)。
用于生产模式。其基本原理是通过 zookeeper 来选举一个 Master,其他
的 Master 处于 Standby 状态。将 spark 集群连接到同一个 ZooKeeper 实例并启
动多个 Master,利用 zookeeper 提供的选举和状态保存功能,可以使一个 Master
被选举成活着的 master,而其他 Master 处于 Standby 状态。如果现任 Master死去,另一个 Master 会通过选举产生,并恢复到旧的 Master 状态,然后恢复调
度。整个恢复过程可能要 1-2 分钟。

基于 zookeeper 的 Spark HA 高可用集群部署

该 HA 方案使用起来很简单,首先需要搭建一个 zookeeper 集群,然后启动
zooKeeper 集群,最后在不同节点上启动 Master。
在这里插入图片描述
(1)vim spark-env.sh
注释掉 export SPARK_MASTER_HOST=hdp-node-01
(2)在 spark-env.sh 添加 SPARK_DAEMON_JAVA_OPTS,内容如下:
export SPARK_DAEMON_JAVA_OPTS=
“-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=node04:2181,node05:2181,node06:2181
-Dspark.deploy.zookeeper.dir=/spark”

在这里插入图片描述

参数说明
spark.deploy.recoveryMode:恢复模式(Master 重新启动的模式)
有三种:(1)ZooKeeper (2) FileSystem (3)NONE
spark.deploy.zookeeper.url:ZooKeeper 的 Server 地址
spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。
包括 Worker,Driver 和 Application。
注意:
在普通模式下启动 spark 集群,只需要在主机上面执行 start-all.sh 就可以了。
在高可用模式下启动 spark 集群,先需要在任意一台节点上启动 start-all.sh 命令。
然后在另外一台节点上单独启动 master。命令 start-master.sh

Spark 角色介绍

Spark 是基于内存计算的大数据并行计算框架。因为其基于内存计算,比
Hadoop 中 MapReduce 计算框架具有更高的实时性,同时保证了高效容错性和可伸缩性。从 2009 年诞生于 AMPLab 到现在已经成为 Apache 顶级开源项目,并成
功应用于商业集群中,学习 Spark 就需要了解其架构。
Spark 架构图如下:
在这里插入图片描述
Spark 架构使用了分布式计算中 master-slave 模型,master 是集群中含
有 master 进程的节点,slave 是集群中含有 worker 进程的节点。
Driver Program :运⾏main 函数并且新建 SparkContext 的程序。
Application:基于 Spark 的应用程序,包含了 driver 程序和集群上的
executor。
Cluster Manager:指的是在集群上获取资源的外部服务。目前有三种类型
(1)Standalone: spark 原生的资源管理,由 Master 负责资源的分配
(2)Apache Mesos:与 hadoop MR 兼容性良好的一种资源调度框架
(3)Hadoop Yarn: 主要是指 Yarn 中的 ResourceManager
Worker Node:集群中任何可以运行 Application 代码的节点,在 Standalone
模式中指的是通过 slaves 文件配置的 Worker 节点,在 Spark on Yarn 模式
下就是 NodeManager 节点
Executor:是在一个 worker node 上为某应⽤启动的⼀个进程,该进程负责
运⾏行任务,并且负责将数据存在内存或者磁盘上。每个应⽤都有各自独立
的 executor。
Task :被送到某个 executor 上的工作单元。

猜你喜欢

转载自blog.csdn.net/weixin_43924642/article/details/89387890