首页技术文章正文

RDD数据丢失后如何恢复?RDD容错机制介绍

更新时间:2021-03-05 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif

RDD是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并且还能控制数据的分区。对于迭代式计算和交互式数据挖掘,RDD可以将中间计算的数据结果保存在内存中,当Spark集群中的某一个节点由于宕机导致数据丢失,就可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式,分别是血统(Lineage)方式和设置检查点(checkpoint)方式。下面,我们就来介绍一下这两种方式。

1615520492922_RDD容错机制.jpg

血统(Lineage)方式,主要是根据RDD之间的依赖关系对丢失数据的RDD进行数据恢复。如果丢失数据的子RDD在进行窄依赖运算,则只需要把丢失数据的父RDD的对应分区进行重新计算即可,不需要依赖其他的节点,并且在计算过程中不会存在冗余计算;若丢失数据的RDD进行宽依赖运算,则需要父RDD的所有分区都要进行从头到尾的计算,在计算过程中会存在冗余计算。为了解决宽依赖运算中出现的计算冗余问题,Spark又提供了另一种方式进行数据容错,即设置检查点(checkpoint)方式。

设置检查点(checkPoint)方式,本质上是将RDD写入磁盘进行存储。当RDD在进行宽依赖运算时,只需要在中间阶段设置一个检查点进行容错,即通过Spark中的sparkContext对象调用setCheckpoint()方法,设置一个容错文件系统目录(如HDFS)作为检查点checkpoint,将checkpoint的数据写入之前设置的容错文件系统中进行高可用的持久化存储,若是后面有节点出现宕机导致分区数据丢失,则可以从做检查点的RDD开始重新计算即可,不需要进行从头到尾的计算,这样就会减少开销。



猜你喜欢:
不同系统如何加载数据创建RDD

RDD为什么要进行数据持久化?它的操作方法有哪些?

Spark的集群安装部署【大数据技术文章】

黑马程序员大数据培训课程

分享到:
在线咨询 我要报名
和我们在线交谈!