持久化的局限

持久化/缓存可以把数据放在内存中,虽然是快速的,但是也是最不可靠的;也可以把数据放在磁盘上,也不是完全可靠的!例如磁盘会损坏等。

问题解决

Checkpoint的产生就是为了更加可靠的数据持久化,在Checkpoint的时候一般把数据放在在HDFS上,这就天然的借助了HDFS天生的高容错、高可靠来实现数据最大程度上的安全,实现了RDD的容错和高可用

使用步骤

1.SparkContext.setCheckpointDir("目录") //HDFS的目录

2.RDD.checkpoint()

代码演示

sc.setCheckpointDir("hdfs://node01:8020/ckpdir")
//设置检查点目录,会立即在HDFS上创建一个空目录
val rdd1 = sc.textFile("hdfs://node01:8020/wordcount/input/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
rdd1.checkpoint() //对rdd1进行检查点保存
rdd1.collect //Action操作才会真正执行checkpoint
//后续如果要使用到rdd1可以从checkpoint中读取

查看结果:

hdfs dfs -ls /

或者通过web界面查看

http://192.168.1.101:50070/dfshealth.html#tab-overview

总结

开发中如何保证数据的安全性性及读取效率

可以对频繁使用且重要的数据,先做缓存/持久化,再做checkpint操作

持久化和Checkpoint的区别

位置

Persist 和 Cache 只能保存在本地的磁盘和内存中(或者堆外内存--实验中)

Checkpoint 可以保存数据到 HDFS 这类可靠的存储上

生命周期

Cache和Persist的RDD会在程序结束后会被清除或者手动调用unpersist方法

Checkpoint的RDD在程序结束后依然存在,不会被删除

Lineage(血统、依赖链--其实就是依赖关系)

Persist和Cache,不会丢掉RDD间的依赖链/依赖关系,因为这种缓存是不可靠的,如果出现了一些错误(例如 Executor 宕机),需要通过回溯依赖链重新计算出来

Checkpoint会斩断依赖链,因为Checkpoint会把结果保存在HDFS这类存储中,更加的安全可靠,一般不需要回溯依赖链

补充:Lineage

RDD的Lineage(血统、依赖链)会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。

在进行故障恢复时,Spark会对读取Checkpoint的开销和重新计算RDD分区的开销进行比较,从而自动选择最优的恢复策略。

【spark】RDD容错机制Checkpoint相关推荐

  1. RDD的依赖关系、窄依赖、宽依赖、RDD的缓存、RDD缓存方式、DAG的生成、RDD容错机制之Checkpoint

    1.RDD的依赖关系 RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency). 1.1.窄依赖 窄依赖指的是每一 ...

  2. Spark的容错机制

    项目中会经常使用到Spark和Flink这些分布式框架,使用的时候老是担心如果出现异常了会怎样,今天就来了解下Spark以及Flink的容错机制. 容错是指一个系统部分出现错误的情况还能持续的提供服务 ...

  3. 2021年大数据Flink(二十七):Flink 容错机制 Checkpoint

    目录 Flink 容错机制 Checkpoint State Vs Checkpoint Checkpoint执行流程 简单流程 复杂流程 State状态后端/State存储介质 MemStateBa ...

  4. Python Spark RDD

    Python Spark RDD RDD(Resilient Distributed Dataset)弹性分布式数据集是Spark的核心,RDD能与其他系统兼容,可以导入外部存储系统的数据集,例如HD ...

  5. 《循序渐进学Spark》一3.5 容错机制及依赖

    本节书摘来自华章出版社<循序渐进学Spark>一书中的第3章,第3.5节,作者 小象学院 杨 磊,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.5 容错机 ...

  6. Spark Streaming之容错机制以及事务语义

    我们知道RDD本身是一个不可变的,可重新计算的.分布式的数据集.每一个RDD都会记住确定好的操作血缘关系. 如果因为某些原因,导致某个worker节点失败,则导致RDD的某个partition数据丢失 ...

  7. 25.Flink监控\什么是Metrics\Metrics分类\Flink性能优化的方法\合理调整并行度\合理调整并行度\Flink内存管理\Spark VS Flink\时间机制\容错机制等

    25.Flink监控 25.1.什么是Metrics 25.2.Metrics分类 25.2.1.Metric Types 25.2.2.代码 25.2.3.操作 26.Flink性能优化 26.1. ...

  8. Spark Streaming 实战案例(四) Spark Streaming 缓存、Checkpoint机制

    主要内容 Spark Stream 缓存 Checkpoint 案例 1. Spark Stream 缓存 通过前面一系列的课程介绍,我们知道DStream是由一系列的RDD构成的,它同一般的RDD一 ...

  9. 第14课:Spark RDD解密

    以下为Spark RDD解密课程学习心得: 在介绍Spark RDD之前,先简单的说下Hadoop MapReduce,它是基于数据流的方式进行计算,从物理存储上加载数据,然后操作数据, 最后写入到物 ...

最新文章

  1. 面向对象中类和类的关系
  2. html 页面视图中的资源文件(css/js/image)的路径问题。
  3. 虚拟机模拟WIN2008创建域控制器与故障转移群集
  4. 008_html属性
  5. oracle DB_LINK
  6. 金山云纳斯达克敲钟上市,雷军手中又多了家上市公司
  7. 电脑计算机无法安3.5,Windows无法安装以下功能:.NET Framework 3.5(包括 .NET 2.0 和 3.0)解决方法...
  8. const char * char * const
  9. SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息
  10. 《实变函数简明教程》,P78,第16题(依测度收敛 推导 依测度收敛,几乎处处小于 推导 几乎处处小于)
  11. python爬虫入门案例day06:QianTu
  12. 有机合成化学类毕业论文文献(推荐10篇)
  13. JSON数据中带有HTML标签解决方法
  14. Android Studio:基本UI界面设计 (详细)
  15. 【SQLServer】常用时间格式转换
  16. 关于富斯遥控器5号电池改锂电的问题探究
  17. 初学AI(ML、DL、TensorFlow)与python、OpenCV的一些体会
  18. 08_微信小程序-BLE低功耗蓝牙开发-设备搜索
  19. 【Latex】TexLive安装说明
  20. 如何用有道云笔记写含数学公式的专业文章

热门文章

  1. 三维目标检测---PartA2论文解读
  2. 《程序员修炼之道——从小工到专家》读后感一
  3. python求一个序列的和_Python合集之Python序列(三)
  4. QQ圈子:你的亲密敌人
  5. oracle 11g的安装
  6. 系统学习----Linux网络管理
  7. C++的3d游戏笔录-基于panda3d(1)
  8. AI黑科技 | 宏碁研发智能穿戴设备:智能佛珠
  9. 佛用品须以恭敬心待之
  10. ue4 材质始终面向摄像机