主页 > 新闻资讯 > 大数据学习:Spark RDD的容错机制

大数据学习:Spark RDD的容错机制

作者:张老师 浏览次数: 2021-04-14 17:48
在前面的《Spark容错机制有哪些》一文当中,提到了Spark的诸多容错设计,具体到不同的层次,其容错还有更细节的设计。而作为Spark核心数据模型的RDD,针对容错又有什么方案呢?今天的大数据学习分享,我们来讲讲Spark RDD的容错机制。

大数据学习:Spark RDD的容错机制

RDD,定义为弹性分布式数据集,从名字说起:

弹性

当计算过程中内存不足时可刷写到磁盘等外存上,可与外存做灵活的数据交换;

RDD使用了一种“血统”的容错机制,在结构更新和丢失后可随时根据血统进行数据模型的重建;

分布式

就是可以分布在多台机器上进行并行计算;

数据集

一组只读的、可分区的分布式数据集合,集合内包含了多个分区。分区依照特定规则将具有相同属性的数据记录放在一起,每个分区相当于一个数据集片段。

RDD容错机制——血统关系

一个作业从开始到结束的计算过程中产生了多个RDD,RDD之间是彼此相互依赖的,我们把这种父子依赖的关系称之为「血统」。

RDD只支持粗颗粒变换,即只记录单个块(分区)上执行的单个操作,然后创建某个RDD的变换序列(血统lineage)存储下来。

*变换序列指每个RDD都包含了它是如何由其他RDD变换过来的以及如何重建某一块数据的信息。

因此RDD的容错机制又称「血统」容错。要实现这种「血统」容错机制,最大的难题就是如何表达父RDD和子RDD之间的依赖关系。

通常来说,父RDD的每个分区最多只能被子RDD的一个分区使用,称为窄依赖(narrow dependency);若父RDD的每个分区可以被子RDD的多个分区使用,称为宽依赖(wide dependency)。简单来讲,窄依赖就是父子RDD分区间「一对一」的关系,而宽依赖就是「一对多」关系。

从失败恢复来看,窄依赖的失败恢复起来更高效,因为它只需找到父RDD的一个对应分区即可,而且可以在不同节点上并行计算做恢复;宽依赖牵涉到父RDD的多个分区,需要得到所有依赖的父RDD分区的shuffle结果,恢复起来相对复杂些。

根据RDD之间的宽窄依赖关系引申出Stage的概念,Stage是由一组RDD组成的执行计划。如果RDD的衍生关系都是窄依赖,则可放在同一个Stage中运行,若RDD的依赖关系为宽依赖,则要划分到不同的Stage。这样Spark在执行作业时,会按照Stage的划分,生成一个最优、完整的执行计划。

关于大数据学习,Spark RDD的容错机制,以上就为大家做了简单的介绍了。Spark RDD是核心的数据模型,基于RDD的容错,主要是基于血统关系去实现,大家可以尝试去源码当中深入理解。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频,可联系客服获取!
热点排行
推荐文章
立即申请>>