Checkpoint

应用的场景

1)DAG中Lineage过长,如果要重新计算的,则开销会很大(如在PageRank中)。

2)在Shuffle Dependency上采用Lineage的话,由于子RDD分区中的一个分区可能依赖于父RDD的中所有分区,所以需要对父RDD中的每个区进行计算,因为在子RDD中有可能其它分区也依赖于父RDD中的多个分区,这样就会造成很大的冗余计算开销。

传统方式

在RDD计算中,通过检查点机制进行容错,传统做检查点有两种方式:

1)通过冗余数据。在RDD中的doCheckPoint方法相当于通过冗余数据来缓存数据;

2)通过日志记录。Lineage就是通过相当粗粒度的记录更新操作来实现容错的。

在Spark中的应用

在Spark中,通过RDD中的checkpoint()方法来做检查点。

def checkpoint():Unit

可以通过SparkContext.setCheckPointDir()设置检查点数据的存储路劲,进而将数据存储备份,然后Spark删除所有已经做检查点的RDD的祖先RDD依赖。这个操作需要在所有需要对这个RDD所做的操作完成之后再做,因为数据写入持久化存储造成I/O开销。官方建议,做检查点的RDD最好实在内存中已经缓存的RDD,否则保存这个RDD在持久化的文件中需要重新计算,产生I/O开销。

检查点(本质是通过将RDD写入Disk做检查点)是为了通过Lineage做容错的辅助,lineage过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果之后节点出现问题而丢失分区,从做检查点的RDD开始重做lineage,就会减少开销。其实这种思想有点像开发程序时,加断点进行调试,哪块儿区域出现bug,就哪块儿区域开始处加断点,没必要从头开始找。

时间: 2024-10-10 13:32:21

Checkpoint的相关文章

InnoDB存储引擎介绍-(4)Checkpoint机制一

检查点的工作机制: innodb会自动维护一个检查点的机制,叫做 fuzzy checkpointing(当然sharp checkpoint也是检查点之一),fuzzy checkpointing就是将buffer pool当中的数据页信息小批量的刷新到磁盘.但是我们没有必要单批次批次的对buffer pool进行刷新,不然后影响其他正在执行的SQL进程. 在crash recovery期间,MySQL也会记录一次检查点信息到log  file当中去.它会记录数据库检查点发生之前的所有修改数据

InnoDB存储引擎介绍-(4)Checkpoint机制二

原文链接 http://www.cnblogs.com/chenpingzhao/p/5107480.html 一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘.因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时刻. 但是这需要两个前提条件:1.缓冲池可以缓存数据库中所有的数据:2.重做日志可以无限增大 因此Checkpoint(检查点)技术就诞生了,目的是解决以下几个问题:1.缩短数据库的恢复时

Lazy Writer&CheckPoint

Lazy Writer存在的目的是对缓冲区进行管理.当缓冲区达到某一临界值时,Lazy Writer会将缓冲区内的脏页存入磁盘文件中,而将未修改的页释放并回收资源. CheckPoint或Lazy Writer通过将日志文件末尾的LSN号和缓冲区中数据文件的LSN进行对比,只有缓冲区内LSN号小于日志文件末尾的LSN号的数据才会被写入到磁盘中的数据库.因此确保了WAL(Write-Ahead logging在数据写入到数据库之前,先写入日志). CheckPoint会将所有缓冲区的脏页写入磁盘,

关于Oracle GoldenGate中Extract的checkpoint的理解 转载

什么是checkpoint? 在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致.SCN是用来描述该事件发生的准确的时间点. 而GoldenGate中出现的checkpoint有着不同的含义.简单的说就是position,位置的意思.它记录了Extract进程在抽取事务时的进度.使用INFO showch 命令可以查看当前正在运行的Extract进程中所记录的checkpoint. 当GoldenGate被计划内或

Checkpoint/Restore in Userspace(CRIU)的安装与使用(CentOS 7.2)

参考网址:Installation - CRIU CRIU安装: 获取CRIU的源代码 git clone https://github.com/xemul/criu 或者 wget http://download.openvz.org/criu/criu-x.x.tar.bz2 tar -xvf criu-x.x.tar.bz2 安装编译依赖软件 yum install gcc make -y yum install glibc-devel.i686 protobuf protobuf-c p

checkpoint防火墙CPU飙高报警

前些天报警系统频繁报出checkpoint防火墙CPU0,CPU1使用率高达95%.登陆checkpoint命令行 expert模式使用"top"命令可以看到一个"monitored"的进程很占用CPU 查了一下相关文档主要是/var/log/db/var/log/下的db文件高达700多M 官方提供的处理方法如下: ===========================================================================

Inondb中的checkpoint

checkpoint主要是为了解决一下问题: 1.缩短数据库的恢复时间 2.缓冲池不够用时,将脏页刷新到磁盘 3.重做日志不可用时,刷新脏页 Innodb引擎使用LSN(log sequence number)来标记日志版本. LSN是占8个字节的数字.每个页都有LSN.重做日志也有LSN.Checkpoint也有LSN. Innodb存储引擎内部有两种checkpoint: 1.sharp checkpoint 发生在数据库关闭时.将所有脏页刷新到磁盘.这是默认的方式,即innodb_fast

Measuring PostgreSQL Checkpoint Statistics

Checkpoints can be a major drag on write-heavy PostgreSQL installations. The first step toward identifying issues in this area is to monitor how often they happen, which just got an easier to use interface added to the database recently. Checkpoints

检查点Checkpoint的工作原理

大多数关系型数据库都采用"在提交时并不强迫针对数据块的修改完成"而是"提交时保证修改记录(以重做日志的形式)写入日志文件"的机制,来获得性能的优势.即:当用户提交事务,写数据文件是"异步"的,写日志文件是"同步"的. 这就可能导致数据库实例崩溃时,内存中的DB_Buffer 中的修改过的数据,可能没有写入到数据块中.数据库在重新打开时,需要进行恢复,来恢复DB Buffer 中的数据状态,并确保已经提交的数据被写入到数据块中.