一、弹性分布式数据集

   1.弹性分布式数据集(RDD)是spark数据结构的基础。它是一个不可变的分布式对象的集合,RDD中的每个数据集都被划分为一个个逻辑分区,每个分区可以在集群上的不同节点上进行计算。RDDs可以包含任何类型的Python,Java或者Scala对象,包括用户自定义的类。

  2.正常情况下,一个RDD是一个只读的记录分区集合。RDDs可以通过对稳定存储数据或其他RDDs进行确定性操作来创建。RDD是一个可以在并行操作期间自动容错的元素的集合。发生错误之后可以进行重复的计算

  3.创建RDD的方式:(1)在驱动程序中并行化现有的集合;(2)引用外部存储系统中的数据集。例如文件共享系统、HDFS、HBase、或者可以提供Hadoop输入格式的数据源

二、MapReduce的数据共享

  1.MapReduce广泛应用于集群上使用分布式的并行算法来处理和生成大型数据集。允许用户使用高级运算符编写代码进行并行计算。而不需要担心工作分布和容错。

  2.不幸的是,在最近使用的大多数框架中,在计算资源之间重用数据的唯一方式是将其写入到外部的稳定的存储系统中,,比如HDFS。

  3.迭代式开发和交互式应用在并行作业中需要更快的数据共享。数据共享在MapReduce中是比较慢的,主要是因为其副本、串行化和磁盘IO。尽管有存储系统存在,但是大多数的Hadoop应用会划分超过90%的时间来做HDFS的读写操作

三、MapReduce的迭代式操作

  1.交互过程

  HDFS从稳定的输入流中读取数据,分成3个副本,在Iteration-1过程之后将其写入磁盘,多级MR是hadoop慢的主要原因。

  2.使用sparkRDD进行数据共享

    在MapReduce上数据共享慢的原因是因为副本,串行化以及磁盘IO。对于大多数Hadoop应用而言,它们花费超过90%的时间在左HDFS读写操作。认识到这个问题之后。研究人员们研发出来一个特殊的框架称之为Apache Spark。spark的核心思想是弹性分布式数据集(Resilient Distributed Datasets 简称RDD)。它支持在内存中进行计算的处理。这意味着它存储内存的状态作为对象,可以在作业之间跨作业和共享的对象。作业共享在内存中要比磁盘块10倍到100倍

 3.在Spark RDD上的迭代式操作

  下面的简图展示了在Spark RDD上的迭代式操作,它会存储中间结果在分布式内存而不是稳定的存储设备(比如磁盘)来使得系统更快。注意:如果分布式内存不足以存储中间结果(JOB的工作状态)

  4.在Spark RDD上的交互操作

    如果不同的查询运行在同一个数据集上,这个特殊的数据可以保存在内存上等待更好的执行时间

  默认情况下,每一个变换的RDD在你运行一个Action的时候可以进行重复计算,你也可以在内存中持久化运算的结果,在这种情况下,Spark会继续在集群上保持元素以得到下次访问更快的处理,也支持在磁盘中持久化数据,或者通过众多的节点来进行复制

  

spark浅谈(1):RDD的更多相关文章

  1. spark浅谈(3):

    一.shuffle操作 1.spark中特定的操作会触发我们都知道的shuffle事件,shuffle是spark进行数据重新分布的机制,这通常涉及跨执行程序和机器来赋值数据,使得混洗称为复杂而且昂贵 ...

  2. spark浅谈(2):SPARK核心编程

    一.SPARK-CORE 1.spark核心模块是整个项目的基础.提供了分布式的任务分发,调度以及基本的IO功能,Spark使用基础的数据结构,叫做RDD(弹性分布式数据集),是一个逻辑的数据分区的集 ...

  3. 浅谈Spark应用程序的性能调优

    浅谈Spark应用程序的性能调优 :http://geek.csdn.net/news/detail/51819 下面列出的这些API会导致Shuffle操作,是数据倾斜可能发生的关键点所在 1. g ...

  4. 浅谈压缩感知(二十):OMP与压缩感知

    主要内容: OMP在稀疏分解与压缩感知中的异同 压缩感知通过OMP重构信号的唯一性 一.OMP在稀疏分解与压缩感知中的异同 .稀疏分解要解决的问题是在冗余字典(超完备字典)A中选出k列,用这k列的线性 ...

  5. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  6. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  7. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  8. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  9. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

随机推荐

  1. Excel: assign label to scatter chart using specific cell values

    ref: https://www.get-digital-help.com/custom-data-labels-in-x-y-scatter-chart/ Improve your X Y Scat ...

  2. __new__与__init__的区别

    __new__  : 控制对象的实例化过程 , 在__init__方法之前调用 __init__ : 对象实例化对象进行属性设置 class User: def __new__(cls, *args, ...

  3. PHP入门培训教程 PHP变量的使用

      很多朋友在编写PHP程序的时候有时候对变量总有着不能确定的问题,而且也有很多问题就是因为变量的处理不当所造成的.这里兄弟连PHP培训 小编,就PHP变量系统说一下. PHP的变量分为全局变量与局部 ...

  4. POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)

    题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...

  5. SQL报错:ORA-00911:无效的字符错误

    转载自:https://blog.csdn.net/huangyanlong/article/details/38096469 *)ORA-00911:无效的字符错误——由编译环境下一个小错误引起.S ...

  6. kubeadm快速部署kubernetes(十九)

    安装要求 部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 ...

  7. optistruct对称约束设置

    如对YZ面对称,则在对称面处约束1 5 6自由度.

  8. ajax传递json参数

    var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...

  9. Java操作数据库之JDBC增删改查

    1.java连接MySql数据库 代码区域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  10. 如何利用EDM邮件营销进行持续推销

    一般来说,一个电子商务网站的转化率在2%左右是正常的.这也意味着其他98%的潜在客户并不会购买任何东西,并且可能再也不回来了.这个时候,如何利用EDM邮件营销进行持续推销呢? 首先,EDM邮件营销可以 ...