RDD(Resilient Distributed Datasets)弹性分布式数据集,是在集群应用中分享数据的一种高效,通用,容错的抽象,是Spark提供的最重要的抽象的概念,

它是一种有容错机制 的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作。

RDD 是只读的,不可变的数据集。RDD也是容错的,假如其中一个RDD坏掉,RDD中有记录之前的依赖关系,依赖关系中记录算子和分区,可以重新生成。

RDD 实现分布式数据集容错方法有两种:数据检查点和记录更新。同时RDD是高效的,不需要物化。它也是分区记录的集合,可以缓存的。

每个RDD都包含有一组RDD分区(partition),数据集的原子组成部分,还有对父RDD的一组依赖,这些依赖描述了RDD的Lineage;

以及一个函数,说明在父RDD上执行何种计算;还包含元数据,描述分区模式和数据存放的位置。

RDD 之间的依赖关系分为宽依赖和窄依赖两类。对于窄依赖,子RDD的每个分区依赖于常数个父分区,

它与数据规模无关。输入输出是一对一的算子,但是其中一种方 式的结果RDD的分区结构不变,主要是map,flatMap。

但是如union,coalesce结果RDD的分区结构会发生变化。对于宽依赖,子 RDD的每个分区都依赖于所有的父RDD分区。

对于两 种依赖关系,窄依赖允许在一个集群节点上以流水线的方式(pipeline)计算所有父分区。

而宽依赖则需要首先计算好所有父分区数据,然后在节点之间进 行Shuffle。

窄依赖能够更有效地进行失效节点的恢复,重新计算丢失RDD分区的父分区,而且不同节点之间可以并行计算;

而对于一个宽依赖关系的 Lineage图,单个节点失效可能导致这个RDD的所有祖先丢失部分分区,因而需要整体重新计算。

同时RDD有五个特征,其中分区,一系列的依赖关系和函数是三个基本特征,最佳位置和分区策略是可选。RDD是移动计算而不是移动数据。

RDD和spark之间,RDD是一种具有容错性基于内存的集群计算抽象方法,Spark则是这个抽象方法的实现。

最新文章

  1. nyoj220 推桌子(贪心算法)
  2. mac下webpagetest搭建
  3. 深入理解Ember-Data特性(上)
  4. mysql 全文搜索的FULLTEXT
  5. Windows下的cmd命令行中设置环境编码
  6. Django1.9 Python3.4出现Error loading MySQLdb
  7. Sqlserver 树形查询
  8. Adding DTrace Probes to PHP Extensions
  9. C# 的轻量级 RPC 框架
  10. 组合计数(polya计数):SGU 282 Isomorphism
  11. 字体图标 icon font
  12. 转:python中函数curry化
  13. 网页WEB打印控件
  14. JavaScript 简介及语法语句
  15. HBase0.98使用ReplicationAdmin管理集群同步
  16. oracle 表所占空间统计
  17. SVG之Path
  18. 洛谷P4723 【模板】线性递推(多项式取模 线性代数)
  19. 修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题
  20. 2018php最新面试题之PHP核心技术

热门文章

  1. mysql --batch --skip-column-name --execute 使用
  2. OOP 概述
  3. iOS-iPad开发之popoverController使用介绍
  4. vi模式
  5. 关于怎么将Quartus和Nios程序一起固化到FPGA里面
  6. Marketplace Client- Download
  7. oracle查看死锁和处理方法
  8. python字符串跟整型互转
  9. 全国OA系统下载地址(全)
  10. Eclipse vs IDEA快捷键对比大全(win系统)