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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: Spark通过Checkpoint机制将RDD状态持久化到磁盘,以支持容错。当任务执行出错时,可以从检查点位置重新计算,减少开销。Checkpoint目录可设置为本地文件夹或HDFS。建议生产系统使用高可靠的文件系统保存检查点。文中详细介绍了在本地和HDFS上设置检查点目录的步骤,并附有代码示例和视频讲解。

b203.png

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


视频讲解如下:


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


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


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


(1)设置检查点目录。

scala> sc.setCheckpointDir("file:///root/temp/checkpoint")


(2)创建RDD。

scala> val rdd1 = sc.textFile("hdfs://bigdata111:9000/input/sales")


(3)标识RDD的检查点。

scala> rdd1.checkpoint


(4)执行计算。

scala> rdd1.count


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


二、使用HDFS目录作为检查点目录


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


(1)设置检查点目录。

scala> sc.setCheckpointDir("hdfs://bigdata111:9000/spark/checkpoint")


(2)创建RDD。

scala> val rdd1 = sc.textFile("hdfs://bigdata111:9000/input/sales")


(3)标识RDD的检查点。

scala> rdd1.checkpoint


(4)执行计算。

scala> rdd1.count


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



相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
10月前
|
存储 分布式计算 并行计算
【赵渝强老师】Spark中的RDD
RDD(弹性分布式数据集)是Spark的核心数据模型,支持分布式并行计算。RDD由分区组成,每个分区由Spark Worker节点处理,具备自动容错、位置感知调度和缓存机制等特性。通过创建RDD,可以指定分区数量,并实现计算函数、依赖关系、分区器和优先位置列表等功能。视频讲解和示例代码进一步详细介绍了RDD的组成和特性。
182 0
|
7月前
|
分布式计算 Spark
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD之间的依赖关系分为窄依赖和宽依赖。窄依赖指父RDD的每个分区最多被一个子RDD分区使用,如map、filter操作;宽依赖则指父RDD的每个分区被多个子RDD分区使用,如分组和某些join操作。窄依赖任务可在同一阶段完成,而宽依赖因Shuffle的存在需划分不同阶段执行。借助Spark Web Console可查看任务的DAG图及阶段划分。
274 15
|
7月前
|
存储 缓存 分布式计算
【赵渝强老师】Spark RDD的缓存机制
Spark RDD通过`persist`或`cache`方法可将计算结果缓存,但并非立即生效,而是在触发action时才缓存到内存中供重用。`cache`方法实际调用了`persist(StorageLevel.MEMORY_ONLY)`。RDD缓存可能因内存不足被删除,建议结合检查点机制保证容错。示例中,读取大文件并多次调用`count`,使用缓存后执行效率显著提升,最后一次计算仅耗时98ms。
156 0
【赵渝强老师】Spark RDD的缓存机制
|
10月前
|
分布式计算 流计算 Spark
【赵渝强老师】Spark Streaming中的DStream
本文介绍了Spark Streaming的核心概念DStream,即离散流。DStream通过时间间隔将连续的数据流转换为一系列不连续的RDD,再通过Transformation进行转换,实现流式数据的处理。文中以MyNetworkWordCount程序为例,展示了DStream生成RDD的过程,并附有视频讲解。
209 0
|
10月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
217 0
|
存储 缓存 分布式计算
Spark 缓存和检查点机制
Spark 缓存和检查点机制
223 0
|
存储 分布式计算 Spark
【Spark Summit EU 2016】Spark中的自动检查点
本讲义出自Nimbus Goehausen在Spark Summit EU 2016上的演讲,主要介绍了面对需要自动保证Spark的数据来源以及存储路径正确,并且在对于需要保存的数据进行保存而对于需要改变的数据进行改变,所以需要在Spark工作流中使用自动检查点来对以上要求进行保障,本讲义就主要介绍了Spark中自动检查点的使用。
2128 0
|
3月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
188 0
|
6月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
283 79
|
10月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
669 2
ClickHouse与大数据生态集成:Spark & Flink 实战