前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【赵渝强老师】Spark的容错机制:检查点

【赵渝强老师】Spark的容错机制:检查点

原创
作者头像
赵渝强老师
发布2025-02-13 19:19:13
发布2025-02-13 19:19:13
790
举报
文章被收录于专栏:大数据技术

由于Spark的计算是在内存中完成,因此任务执行的生命周期lineage(血统)越长,执行出错的概念就会越大。Spark通过检查点Checkpoint的方式,将RDD的状态写入磁盘进行持久化的保存从而支持容错。如果在检查点之后有节点出现了问题,Spark只需要从检查点的位置开始重新执行lineage就可以了,这样就减少了开销。设置checkpoint的目录,可以是本地的文件夹,也可以是HDFS。

视频讲解如下:

建议在生产系统中采用具有容错能力、高可靠的文件系统作为检查点保存的目的地。

1、使用本地目录作为检查点目录

这种模式需要将spark-shell运行在本地模式上。下面的代码使用了本地目录作为RDD检查点的目录

(1)设置检查点目录。

代码语言:scala
复制
scala> sc.setCheckpointDir("file:///root/temp/checkpoint")

(2)创建RDD。

代码语言:scala
复制
scala> val rdd1 = sc.textFile("hdfs://bigdata111:9000/input/sales")

(3)标识RDD的检查点。

代码语言:scala
复制
scala> rdd1.checkpoint

(4)执行计算。

代码语言:scala
复制
scala> rdd1.count

(5)当计算完成后,查看本地的/root/temp/checkpoint目录下生成了相应的检查点信息,如下图所示。

2、使用HDFS目录作为检查点目录。

这种模式需要将spark-shell运行在集群模式上。下面的代码使用了HDFS目录作为RDD检查点的目录

(1)设置检查点目录。

代码语言:scala
复制
scala> sc.setCheckpointDir("hdfs://bigdata111:9000/spark/checkpoint")

(2)创建RDD。

代码语言:scala
复制
scala> val rdd1 = sc.textFile("hdfs://bigdata111:9000/input/sales")

(3)标识RDD的检查点。

代码语言:scala
复制
scala> rdd1.checkpoint

(4)执行计算。

代码语言:scala
复制
scala> rdd1.count

(5)当计算完成后,查看HDFS的/spark/checkpoint目录下生成了相应的检查点信息,如下图所示。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、使用本地目录作为检查点目录
  • 2、使用HDFS目录作为检查点目录。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档