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 不能斩断依赖链,只能把数据保存在本地的磁盘和内存等不可靠的存储中,进行重放容错。

相关文章
|
并行计算 算法 计算机视觉
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
397 0
|
监控 Dubbo Java
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
283 0
|
SQL 分布式计算 Hadoop
Hive使用Impala组件查询(1)
Hive使用Impala组件查询(1)
887 0
|
SQL 存储 Java
Hive教程(09)- 彻底解决小文件的问题
Hive教程(09)- 彻底解决小文件的问题
1379 1
|
8月前
|
运维 Docker 容器
最简 Odoo 部署方法:Websoft9 企业应用托管平台
Odoo手工部署通常依赖Docker,需依次完成Docker安装、镜像拉取与容器运行,但存在安装复杂、镜像下载慢、配置繁琐及管理困难等问题。Websoft9提供了解决方案:通过云原生模板和自动化工具简化部署。仅需登录Websoft9控制台选择Odoo版本并绑定服务器,创建数据库后初始化,最后登录后台完成设置,大幅降低部署难度与运维成本。
244 0
  最简 Odoo 部署方法:Websoft9 企业应用托管平台
|
6月前
|
消息中间件 监控 关系型数据库
覆盖迁移工具选型、增量同步策略与数据一致性校验
本文深入解析数据迁移核心挑战,涵盖工具选型、增量同步优化与一致性校验三大关键环节,结合实战案例与代码方案,助开发者规避风险,实现高效可靠迁移。
281 0
|
11月前
|
存储 监控 算法
Flink 四大基石之 Checkpoint 使用详解
Flink 的 Checkpoint 机制通过定期插入 Barrier 将数据流切分并进行快照,确保故障时能从最近的 Checkpoint 恢复,保障数据一致性。Checkpoint 分为精确一次和至少一次两种语义,前者确保每个数据仅处理一次,后者允许重复处理但不会丢失数据。此外,Flink 提供多种重启策略,如固定延迟、失败率和无重启策略,以应对不同场景。SavePoint 是手动触发的 Checkpoint,用于作业升级和迁移。Checkpoint 执行流程包括 Barrier 注入、算子状态快照、Barrier 对齐和完成 Checkpoint。
2325 20
|
Kubernetes API Docker
kubernetes Operator 【2】实战CRD编程
kubernetes Operator 【2】实战CRD编程
kubernetes Operator 【2】实战CRD编程
|
存储 SQL 机器学习/深度学习
数据仓库与数据湖的联系与区别
数据仓库与数据湖的联系与区别
数据仓库与数据湖的联系与区别
|
缓存 负载均衡 Unix
Nginx深入详解之upstream分配方式
Nginx深入详解之upstream分配方式
1078 0