1. RDD cache缓存
当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用(不需要重新计算)。这使得后续的动作变得更加迅速。RDD相关的持久化和缓存,是Spark最重要的特征之一。
val rdd = sc.textFile("hdfs://172.23.27.19:9000/wrd/wc/srcdata/").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
rdd.cache()//现在没有缓存
rdd.collect//遇到action开始缓存
.cache()是一个transformation。在job的storage页面也可以看到缓存信息。.unpersist(true)释放这个资源
设置缓存方式
RDD通过persist方法设置。默认的存储级别都是仅在内存存储一份,Spark的存储级别还有好多种,存储级别在object StorageLevel中定义的。
<iframe id="iframe_0.2717513367533684" style="margin: 0px; padding: 0px; border-style: none; border-width: initial; width: 837px; height: 393px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://i.imgur.com/Er17s5z.png?_=6232826%22%20style=%22border:none;max-width:1214px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.2717513367533684',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
可以设置在内存、硬盘、还有份数。
2. checkpoint容错机制
缓存有可能丢失,或者存储存储于内存的数据由于内存不足而被删除。通过基于RDD的一系列转换,丢失的数据会被重算,由于RDD的各个Partition是相对独立的,因此只需要计算丢失的部分即可,并不需要重算全部Partition。
但是,多次迭代后数据丢失的重新计算,会影响这个效率。因此,RDD的缓存容错机制保证了即使缓存丢失也能保证快速的恢复,而不是重新计算。
checkpoint保存的目录是在HDFS目录中,保证了存储的可靠性。
sc.setCheckpointDir("hdfs://master:9000/..")//会在..目录创建一个文件夹
//对象面的rdd设置checkpoint
rdd.checkpoint
rdd.collect
checkpoint和cache一样,是transformation
当遇到action时,checkpoint会启动另一个任务,将数据切割拆分,保存到设置的checkpoint目录中。
在Spark的checkpoint源码中提到,
- 当使用了checkpoint后,数据被保存到HDFS,此RDD的依赖关系也会丢掉,因为数据已经持久化到硬盘,不需要重新计算。
- 强烈推荐先将数据持久化到内存中(cache操作),否则直接使用checkpoint会开启一个计算,浪费资源。
<iframe id="iframe_0.7357817601878196" style="margin: 0px; padding: 0px; border-style: none; border-width: initial; width: 767px; height: 57px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://i.imgur.com/a9funV8.png?_=6232826%22%20style=%22border:none;max-width:1214px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.7357817601878196',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
http://www.cnblogs.com/wangrd/p/6232826.html
相关推荐
GitHub上某位大牛JerryLead对Spark的理解,大量图示,生动形象,总共7个pdf,看完对spark的原理,运行机制以及后续性能调优有很大的帮助,这是第六个pdf,讲述了cache、checkpoint的实现、使用等常见问题
- 结合其他容错机制:如Tungsten的Shuffle Write Cache和RDD的持久化策略,以进一步优化性能。 综上所述,Spark Batch Checkpointing是提升Spark批处理作业稳定性和效率的重要手段,理解其原理并合理配置,能帮助...
本篇文章主要探讨Spark中的RDD缓存和checkpoint机制。 首先,RDD缓存是Spark提升性能的关键特性。通过调用`persist()`或`cache()`方法,我们可以将一个RDD的计算结果存储在内存中,以便后续的操作可以快速访问,...
精通Spark内核:此阶段聚焦于Spark内核的设计、实现和核心源码解析,对内核中的实现架构、运行原理、性能调优和核心源码...4,精通Shuffle、Cache、Checkpoint和Broadcast 掌握此阶段即可跻身于Spark内核高手之列!
本文主要讨论 Apache Spark 的设计与实现,重点关注其设计思想、运行原理、实现架构及性能调优,附带讨论与 ...Cache and Checkpoint 介绍 cache 和 checkpoint 功能 Broadcast 介绍 broadcast 功能 Job Scheduling
- **Storage模块**:提供数据缓存和持久化存储功能,包括Cache和Checkpoint。 - **Network模块**:处理Task之间的数据交换,特别是Shuffle过程中的数据传输。 #### 六、Cache和Checkpoint功能 - **Cache**:允许将...
本篇笔记主要探讨Spark中的共享变量、RDD持久化、checkpoint机制、运行模式以及任务调度等相关知识点。 1. **共享变量** - **累加器(Accumulator)**:累加器是一种只能增加不能减少的共享变量,常用于统计任务中...
cache 和 checkpoint 功能Broadcast 介绍 broadcast 功能Job Scheduling 尚未撰写Fault-tolerance 尚未撰写可以直接点 md 文件查看。喜欢看 pdf 版本的可以去 这里 下载。如果使用 Mac OS X 的话,推荐下载 MacDown ...
7. **故障恢复与容错机制**:介绍Spark的检查点和事件日志,以及如何配置`spark.checkpoint.interval`和`spark.eventLog.enabled`来增强系统稳定性。 8. **性能监控与调优工具**:了解如何使用Spark自带的Web UI...
Spark的容错机制主要依赖于RDD(弹性分布式数据集)的血统(lineage)和检查点(checkpoint)。当Executor故障时,可以通过重新计算丢失的RDD来恢复状态。检查点则是定期将RDD持久化到可靠的存储系统(如HDFS),以...
在Spark和Hadoop生态系统中,安全机制通常采用Kerberos进行身份验证,以确保数据的安全传输。当使用Kerberos时,系统会生成一种称为Delegation Tokens(委托令牌)的临时凭证,这些令牌用于在各个服务之间进行无密码...
Spark Core是Apache Spark的核心组件,它是Spark所有其他模块的基础,包括Spark SQL、Spark Streaming和MLlib等。在Spark中,RDD(弹性分布式数据集)是基本的数据抽象,它提供了高度并行和容错的能力,使得大数据...
本文将详细介绍Spark中的RDD API,这些知识点对初学者理解Spark基础和进行实际操作将十分有帮助。 RDD是Spark中用于进行分布式数据处理的基本数据结构。它是一个不可变的分布式对象集合,具有容错性,并且在数据...
- 使用Checkpoint机制定期合并FSImage和EditLog。 - 数据副本策略确保数据冗余。 - 可通过Zookeeper等工具实现高可用配置,减少单点故障的影响。 **7. NameNodeHA中的脑裂问题** - 脑裂是指两个NameNode同时认为...
- 考虑使用持久化机制(如Cache或Checkpoint)来减少重复计算。 通过以上内容,我们了解到如何利用Spark和Java进行session分析,从数据加载、预处理、session划分到结果分析,涵盖了整个数据分析流程。这在现代...
在Spark中,使用RDD API适用于需要进行复杂的数据转换和聚合操作的场景。由于RDD是低级API,它提供了更细粒度的控制,允许开发者优化底层的执行计划,从而在一些特定的场景下达到更高的性能。 ### 编程范式 RDD支持...
- **RDD持久化(Persist)**: 在Spark中,可以通过调用`persist`或`cache`方法来缓存RDD,从而避免重复计算。需要注意的是,在调用`persist`后不应再有其他的转换操作,以防止数据集的更新导致缓存失效。 - **...
- Spark SQL和DataFrame的调优主要包括: - **SparkSQL join优化**: 使用Broadcast join或Sort merge join。 - **优化数据倾斜场景下的SparkSQL性能**: 通过Repartition或Coalesce调整数据分布。 - **优化小文件...