【SPARK-CORE】checkpoint机制
本文主要介绍SPARK RDD的checkpoinnt机制
checkpoint机制介绍
checkpoint是将RDD保存到可靠的存储中的机制,主要目的是提高应用的容错能力和持久性。Checkpointing 将数据从内存中转移到磁盘存储,使得在出现节点故障时,Spark 可以从存储中恢复数据,而不需要重新计算所有的数据。这在复杂的数据处理应用程序中尤为重要。
如何使用
- 指定checkpoint目录
- 调用checkpoint方法
- 执行action算子,触发job
val conf = new SparkConf().setAppName("Checkpoint Example") val sc = new SparkContext(conf) // 指定checkpoint目录 sc.setCheckpointDir("hdfs://path/to/checkpoint/dir") val rdd = sc.parallelize(Seq(1, 2, 3, 4, 5)) // 显示的调用checkpoint() rdd.checkpoint() // 执行 action 以触发 checkpoint rdd.count()
Checkpoint 的原理
-
触发条件:
- Checkpoint 并不会立即执行,必须要有 action 操作(如
count()
、collect()
等)触发。
- Checkpoint 并不会立即执行,必须要有 action 操作(如
-
血统图重置:
- 当 RDD 被 checkpoint 之后,其血统图将被重置,只包含到 checkpoint 文件的引用。这极大地减少了 DAG 的复杂性和计算开销。
-
可靠存储:
- Checkpoint 数据被存储在设置的 checkpoint 目录中,该目录应在可靠的存储系统中,如 HDFS。
-
恢复机制:
- 在发生节点故障时,Spark 可以从 checkpoint 目录中恢复数据,而不必重新计算所有 RDD。
使用技巧
由于checkpoint会触发算子的重新计算然后保存计算结果到指定的目录,因此在调用checkpoint方法之前最好对算子进行一个持久化操作,这样可以确保 RDD 在内存中或磁盘上有一个缓存副本,减少重复计算的开销。目前spark还不支持异步checkpoint
rdd = spark.read.json('hdfs://data/xx') res = rdd.map(data => line.split(',')).filter(data=>xxx) // 先对数据进行一个缓存 res.persist() // 1.设置checkpoint目录 // 2.checkpoint res.checkpoint() // 3. action触发job res.collect()
分类:
大数据 / Spark
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架