Checkpoint_意义 | 学习笔记

简介: 快速学习 Checkpoint_意义

开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段Checkpoint_意义学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12001


Checkpoint_意义


checkpoint 是 RDD 中重要的机制,在 spark 中很重要,学习此章节可以独立使用 checkpoint,了解缓存,checkpoint 是什么,对于 RDD 的运算,容错,以及对 RDD 都有更多的认识。


内容介绍:

一、什么是 checkpoint

二、Checkpoint 作用

三、Checkpoint cache 的区别


一、什么是 checkpoint

进入笔记,spark Checkpoint 的主要作用是斩断 RDD 的依赖链。

Checkpoint 的两种方式

1、可靠的将数据存储在可靠的存储引擎中,例如 HDFS。要将 RDD 缓存在本地 block manager 中,在 exquator中。如果 work 崩溃,数据消失。而 RDD 也能存储在 HDFS 中,即一种 checkpoint 可靠的方式,即将 RDD 的数据缓存到 HDFS 中。

2、本地的将数据存储在本地,称为 Local checkpoint,较少使用,和 RDD 的区别比较小。本地存储方式不太符合checkpoint 的思想。

 

二、Checkpoint 有一个很重要的作用,即斩断依赖链。

举例说明:

spark 没有关系,NameNode 如何保存数据。有1NameNode2datenodeNameNode 是主,datenode是从的一个关系,如果外部的文件要存到 HDFS 中,需要先经过 NameNode,将文件生成文件数,放在目录中,并添加相应的信息。即为 NameNode 的机制。

image.png

两大存储分别为 edits fsimageedits 是一个只能追加的 Log,或者队列。

距离:插入多个新文件,且修改文件,此时有好多记录,都是 edits 的记录。

1. 每一次修改文件时都会向 edits 中添加一条记录。不需要每次修改文件数,只添加记录,不影响他人,同时保持了文件状态。在某些情况下,删掉所有的 edits,在 fsimage 生成一个新的 fsimage,那 fsimage 代表当前最新系统文件数,文件状态。

2.在一定条件满足的情况下,把 edits 删掉,添加一个新的 fsimage,包含了系统当前最新的状态。即 NameNode 的机制。

Edits 删掉的动作有什么优势?

如果 edits 不删除会越来越多,如果想要查看系统当前的文件数,要从整个 edits 中追溯当前状态。如果有十条记录,分别为添加、中间有多个修改、需要从头开始寻找当前状态,每次寻找速度太慢,效率低,因此删除前面的edits,会增快速度,提升稳定性,出错少。为 HDFS 机制。

image.png

此机制和 spark 相似,spark 是多个 RDD 相连,依次生成的关系。当 RDD 的依赖链越来越长时,最后一个 RDD6某一个分区的数据出错,需要依次往前回溯,寻找错误,重新计算数据,如果流程很长,将会对系统造成影响。

此时斩断依赖链发挥作用。斩断依赖链是斩断 RDD 的依赖流程中的链条,斩断后,不需要计算之前的数据。如果依赖链切断,容错如何做?如何恢复数据?

如果中途 RDD4出错,且依赖被斩断,正常情况下可以重放,即从 RDD3重新计算数据。如果将 RDD4数据放在可靠的外部存储工具,例如 HDFS,理论上可以解决问题且不出错,容错是其基本的点。错误数据可以从 HDFS 中重取。

 

三、Checkpoint cache 的区别

Checkpoint 是缓存,分为两部分: 斩断依赖链保存数据,形成新的依赖关系。计算快且出错少; 是很好的容错手段,保存数据提供使用,与 cache 相似。

最大的区别是 Catch 可以把 RDD 计算出并放在内存中,但是 RDD 的依赖链不变,如果出错进行重放,回溯计算,重新计算出错的数据。Checkpoint catch 的方式不相同。

在不出错的情况下,步骤相似。如果出错,容错的手段不一样。Catch 进行重放计算,但 checkpoint 直接将结果保存在外部可靠存储中,如果出错,直接复制文件实现容错。

存放位置的不同是最大的区别 :

1checkpoint 可以保存数据到 HDFS 这类可靠的存储上,而 persist cache 只能保存在本地的磁盘和内存中。

2、Checkpoint 可以斩断 RDD 的依赖链,而 persist cache 不可以。

3、Checkpoint 没有向上依赖链,所以程序结束后依然存在不会被删除,而 cache persist 会在程序结束之后立刻被清除。

总结:

最大的区别是 Checkpoint 可以将数据存在外部可靠的存储引擎中,然后斩断依赖链,cache 不能斩断依赖链,只能把数据保存在本地的磁盘和内存等不可靠的存储中,进行重放容错。

相关文章
|
存储 缓存 分布式计算
Spark 的持久化 & Checkpoint
Spark 的持久化 & Checkpoint
257 0
|
缓存 关系型数据库 数据库
PG:checkpoint是什么
PG:checkpoint是什么
104 0
|
索引
CheckPoint刷写脏页
CheckPoint刷写脏页
78 1
|
存储 关系型数据库
PG检查点刷写脏页CheckPointGuts
PG检查点刷写脏页CheckPointGuts
144 0
|
缓存 分布式计算 大数据
Checkpoint_使用 | 学习笔记
快速学习 Checkpoint_使用
451 0
Checkpoint_使用 | 学习笔记
|
分布式计算 Hadoop 开发者
CheckPoint 时间设置| 学习笔记
快速学习 CheckPoint 时间设置
260 0
|
分布式计算 Hadoop