为什么会引入RDD?

我们知道,无论是工业界还是学术界,都已经广泛使用高级集群编程模型来处理日益增长的数据,如MapReduce和Dryad。这些系统将分布式编程简化为自动提供位置感知性调度、容错以及负载均衡,使得大量用户能够在商用集群上分析超大数据集。大多数现有的集群计算系统都是基于非循坏的数据流模型。即从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组稳定性操作构成的DAG(Directed Acyclic Graph,有向无环图),然后写回稳定存储。DAG数据流图能够在运行时自动实现任务调度和故障恢复。

尽管非循环数据流是一种强大的抽象方法,但仍然有些应用无法使用这种方式描述。这类应用包括:

1)机器学习和图应用中常用的迭代算法(每一步对数据执行相似的函数);

2)交互式数据挖掘工具(用户反复查询一个数据子集)。

基于数据流的框架并不明确支持工作集,所以需要将数据输出到磁盘,然后在每次查询时重新加载,这会带来较大的开销。针对上述问题,Spark实现了一种分布式的内存抽象,称为RDD(弹性分布式数据集)。

它支持基于工作集的应用,同时具有数据流模型的特点:自动容错,位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用于工作集,这极大地提升了查询速度。

最新文章

  1. ldap + kerberos 整合
  2. [Android]Activity跳转传递任意类型的数据、Activity为SingleTask时代替StartActivityForResult的解决方案
  3. phpcms常用标签
  4. quay.io/coreos/etcd 基于Docker镜像的集群搭建
  5. nginx查看配置文件nginx.conf路径
  6. 整合iis+tomcat
  7. Junit,hamcrest和Eclemma安装及使用
  8. ARC下的内存泄露
  9. Java 5 的新标准语法和用法详解集锦
  10. CSS - DOM 经常使用方法
  11. 【Win10】刷新DNS缓存
  12. python3.5 + PyQt5 +Eric6 实现的一个计算器
  13. c# 委托(Func、Action)
  14. 常用到的html页面布局和组件: 自己用
  15. js之制作简易红绿灯
  16. Azure DevOps
  17. 从.Net到Java学习第十一篇——SpringBoot登录实现
  18. Lucene入门实例-CRUD
  19. fedora liveuser 切换root;su -l root
  20. 数字证书签发,授权等相关以及https建立通信过程

热门文章

  1. C++ STL 中erase()的使用需要小心
  2. jquery来跨域提交表单
  3. phpcms上线步骤,无法生成缓存,页面空白原因
  4. 51nod1757 大灾变
  5. POJ2186 POPULAR COW
  6. BZOJ 3694 最短路
  7. 使用crs_setperm修改RAC资源的所有者及权限
  8. RequireJS进阶(二) 转
  9. vs2008破解方法
  10. bootstrap-datetimepicker在经过GC(Google Closure Compiler)压缩后无法使用的解决方案