Spark内核分析之Spark的HA源码分析

        Spark作业运行的集群环境有两种,分别基于standalone模式和Yarn集群模式。我们知道Yarn集群提供了HA来保证了集群的高可用,而standalone也提供了一种集群高可用的方法,即通过配置可以实现双master机制,保证在一个master挂掉以后,另外一个master立即启用。spark的主备切换提供了两种模式,一种是基于文件系统的,另外一种是基于zookeeper的。下面我们来看看spark集群的master主备切换是怎么实现的,如下图所示;

Master主备切换原理图

1.当active master挂掉以后,通知standby master启动,并使用持久化引擎对持久化数据进行读取; 2.持久化引擎将不为空的数据全部注册到master的内存缓冲中; 3.master向所有的Application,Worker发送自己的地址信息; 4.Application,Driver,Worker收到消息并返回一个消息告知master; 5.master一一接收到来自各个Application,worker,Driver的消息以后,开始过滤掉没有响应的节点信息,然后开始调用scheduler()方法,开始为相关进程分配资源;

通过以上原理的介绍,下面看看我们的源码具体是怎么实现的,

worker过滤具体实现

application过滤实现

Driver过滤实现

        关于持久化引擎的补充说明,在spark中引入了三种持久化引擎,分别是基于文件的持久化引擎,基于zookeeper的持久化引擎,BlackHolePersistenceEngine引擎;系统默认采用的是基于文件的持久化引擎,可以通过spark.deploy.recoveryMode参数配置具体采用那种持久化引擎,该参数的设置位置时spark-env.sh中。

设置为zookeeper的方式:

//spark.deploy.recoveryMode=ZOOKEEPER //spark.deploy.zookeeper.url=192.168.1.100:2181,192.168.1.101:2181 // /spark是默认的,可以不写 //spark.deploy.zookeeper.dir=/spark

设置为基于文件系统的方式:

spark.deploy.recoveryMode=FILESYSTEM spark.deploy.recoveryDirectory=/usr/local/src/spark/dataDir

总结:到这里基本上关于spark的HA的原理及实现分析就完了,后续关于其他组件的实现及源码不定期更新,欢迎关注。

如需转载,请注明:

上一篇:Spark内核分析之SparkContext初始化源码分析

本篇:Spark内核分析之Spark的HA源码分析

下一篇:Spark内核分析之Master的注册机制实现原理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何使用Nginx实现CDSW的跨网段访问

在企业安装了CDSW后,由于服务安装在生产网络,考虑到集群的安全企业不允许将生产环境的网络直接放通给办公网或外网访问,如果需要在办公网或是外网访问则需要通过反向...

40940
来自专栏星汉技术

原 Spark On Yarn完全分布式搭

64850
来自专栏JavaEdge

史上最快! 10小时大数据入门实战(八)- Hadoop 集成 Spring 的使用1 Spring Hadoop 开发环境搭建及访问 HDFS 文件系统

14430
来自专栏技术专栏

Hadoop 伪分布式安装部署

使得环境变量生效: source ~/.bash_profile 验证java是否配置成功: java -v 详细请参考 http://blog.csdn....

37420
来自专栏xingoo, 一个梦想做发明家的程序员

Spark Client启动原理探索

经过几天闲暇时间的学习,终于又理解的深入了一些,关于Spark Client如何提交作业也更清晰了点。 在整体的流程图上是这样的: ? 大体的思路就是...

361100
来自专栏顶级程序员

【更新】Hadoop代码结构及载入Ecplise方法

一、项目结构 在Hadoop代码结构中,按照功能的不同将项目划分到不同目录当中。 ? 整个项目可以用maven进行构建,因此根目录下有pom.xml文件。 每个...

363120
来自专栏about云

Cloudera Manager Server5及Cloudera Manager Agents5命令整理(about云)

问题导读 1.使用什么命令可以开启、停止、重启Cloudera Manager Server 2.如何强制重启Agents 3.什么情况下适合强制重启Agen...

34970
来自专栏玩转JavaEE

Spring Cloud Bus整合Kafka

Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera Hadoop,Apache Storm,Ap...

487100
来自专栏个人分享

Hadoop常用命令

HDFS基本命令: hadoop fs -cmd cmd: 具体的操作,基本上与UNIX的命令行相同 args:参数 HDFS资源URI格式: scheme:/...

12420
来自专栏伦少的博客

centos7 hadoop 集群安装配置

转载请务必注明原创地址为:http://dongkelun.com/2018/04/05/hadoopClusterConf/

42330

扫码关注云+社区

领取腾讯云代金券