Resilient Distributed Datasets (RDD)
Resilient Distributed Datasets
RDD本质上是一组数据的Spark表示,分布在多台机器上,使用API让您对其进行操作。RDD可以来自任何数据源,例如文本文件,通过JDBC的数据库等。
其定义为:
RDD是容错的并行数据结构,允许用户明确地将中间结果保存在内存中,控制其分区以优化数据放置,并使用各种的运算符操作。
弹性分布式数据集(RDD)是Spark的基本数据结构。它是一个不可变的分布式对象集合。RDD中的每个数据集被划分为逻辑分区,其可以在集群的不同节点上计算。RDD可以包含任何类型的Python,Java或Scala对象,包括用户定义的类。
形式上,RDD是只读的分区记录集合。可以通过对稳定存储或其他RDD上的数据的确定性操作来创建RDD。RDD是一个容错的容错集合,可以并行操作。
有两种方法可以创建RDD - 在驱动程序中并行化现有集合,或在外部存储系统中引用数据集,例如共享文件系统,HDFS,HBase或提供Hadoop输入格式的任何数据源。
Spark利用RDD的概念来实现更快,更高效的MapReduce操作。让我们首先讨论MapReduce操作是如何发生的以及为什么它们不那么有效。
MapReduce中的数据共享速度很慢
MapReduce被广泛用于在集群上使用并行分布式算法处理和生成大型数据集。它允许用户使用一组高级操作符编写并行计算,而不必担心工作分配和容错。
不幸的是,在大多数当前框架中,在计算之间重用数据的唯一方法(Ex − between two MapReduce jobs)是将其写入外部稳定存储系统(Ex-HDFS)。虽然这个框架提供了许多用于访问集群计算资源的抽象,但用户仍然需要更多。
迭代和交互应用程序都要求跨并行作业更快地共享数据。由于复制、序列化和磁盘IO, MapReduce中的数据共享很慢。对于存储系统,大多数Hadoop应用程序花费90%以上的时间进行HDFS读写操作。
MapReduce上的迭代操作
在多阶段应用程序中跨多个计算重用中间结果。下面的插图解释了当前框架如何工作,同时在MapReduce上执行迭代操作。由于数据复制、磁盘I/O和序列化导致系统运行缓慢,这会导致大量开销。
MapReduce上的交互操作
用户在同一数据子集上运行特殊查询。每个查询将在稳定的存储上执行磁盘I/O,这将支配应用程序的执行时间。
下图解释了当前框架在MapReduce上执行交互查询时是如何工作的。
利用RDD做数据共享
由于复制、序列化和磁盘IO, MapReduce中的数据共享很慢。大多数Hadoop应用程序花费90%以上的时间执行HDFS读写操作。
认识到这个问题后,研究人员开发了一个名为Apache Spark的专门框架。spark的核心思想是弹性分布式数据集(RDD);它支持内存处理计算。这意味着,它将内存状态作为一个对象跨作业存储,并且该对象可以在这些作业之间共享。内存中的数据共享速度比网络和磁盘快10到100倍。
在RDD中上的迭代操作
下图显示了Spark RDD上的迭代操作。它将中间结果存储在分布式内存中,而不是稳定的存储(磁盘)中,使系统速度更快。
注意:如果分布式内存(RAM)不足以存储中间结果(作业状态),那么它将把这些结果存储在磁盘上。
基于RDD中的交互操作
这个图显示了Spark RDD上的交互操作。如果在同一组数据上重复运行不同的查询,则可以将此特定数据保存在内存中,以获得更好的执行时间。
默认情况下,每次对每个转换后的RDD运行操作时,都可以重新计算它。不过,您也可以在内存中保存一个RDD,在这种情况下,Spark将把元素保存在集群中,以便在下次查询时更快地访问它。还支持在磁盘上持久存储RDDs,或跨多个节点复制RDDs。
转载于:https://www.cnblogs.com/tcppdu/p/10591454.html
Resilient Distributed Datasets (RDD)相关推荐
- Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)
Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD ...
- Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集)
Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集) 铺垫 在hadoop中一个独立的计算,例如在一个迭代过程中,除可复制的文件系统(HDFS)外没有 ...
- Spark学习笔记10-RDD(Resilient Distributed Datasets)
1.RDD概念 RDD(Resilient Distributed Datasets),弹性分布式数据集.是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的 ...
- Resilient Distributed Datasets: A Fault-Tolerant Abstraction forIn-Memory Cluster Computing
1 Intruction 问题1: 许多框架缺乏充分利用分布式内存的抽象,这使得它们不适用于大量计算都需要重用中间结果的情形,但数据重用又比较常见,比如许多迭代机器学习和图算法.交互式数 ...
- Spark-RDD论文《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster 》有感
动机 当前很多分布式计算框架无法实现高效的迭代式计算以及交互式数据挖掘,包括Hadoop!,首先为了解决高效这个问题,RDD提出基于内存的迭代思想,直接鄙视了Hadoop要不断进行磁盘Spill的弊端 ...
- RDD(Resilient Distributed Datasets 弹性分布式数据集)
RDD是spark计算框架的核心,spark相比于hadoop的优越性在RDD中体现得淋漓尽致.对于RDD的介绍,最好的资料就是那篇专门介绍RDD的论文了,已经有中文翻译.使用scala编写spark ...
- Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 阅读笔记
文章目录 背景 弹性分布式数据集(RDDs) 如何产生 RDD 用户可以对 RDD 的控制 Spark 提供的编程接口 lineage 图示 RDDs 表示 实现 作业调度 调度思想 阶段(stage ...
- (翻译)Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing
中文版链接:http://shiyanjun.cn/archives/744.html
- 【Spark】RDD(Resilient Distributed Dataset)究竟是什么?
目录 基本概念 官方文档 概述 含义 RDD出现的原因 五大属性 以单词统计为例,一张图熟悉RDD当中的五大属性 解构图 RDD弹性 RDD特点 分区 只读 依赖 缓存 checkpoint 基本概念 ...
最新文章
- IOI2011 BZOJ2600 ricehub
- 【组队学习】【31期】组队学习内容详情
- Fedora 10成功安装KDE4.2正式版
- 英媒:滴滴和优步每年烧钱64亿
- bzoj 4001 [TJOI2015]概率论 数学
- Zookeeper单机安装(开启kerberos)
- 【读书笔记】周志华《机器学习》第三版课后习题讨第一章-绪论
- mysql的随机查询
- 数据库 Oracle监听实例详解
- 注册表知识与技巧大全
- c语言大作业通讯录报告,数据结构大作业报告-C语言通讯录系统-链表.pdf
- java 时间处理工具类
- 二极管和三极管介绍-二极管和三极管的区别及工作原理详解-KIA MOS管
- 软件测试工程师人才需求量,软件测试工程师:人才缺口超20万 月薪达七八千
- Boot Loader点点滴滴(转)
- 多点触摸画板(MultiTouchCanvas)
- ROS机器人高效编程(原书第3版)勘误、问题及资料汇总
- 如何链接外部JavaScript文件
- MySQL Server 安装和卸载
- ESP32之ESP-IDF安装
热门文章
- postgresql 时间时间相加比较
- oracle审计sys用户,oracle 11gR2启用对sys用户操作行为的审计
- Fixed There was a problem with the editor 'vi'
- 【qt】windows下本地文件的标准url格式
- asic special timing issue
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(十一)3D SLG(策略战棋游戏)设计案例
- 千万别再瞎学Python了(当心学废了),过来人的一些学习经验,能让你少走弯路
- PhysX3.4文档(1) -- startup and shutdown
- python 小波阈值去噪
- android 非root抓包,未root的Android手机抓包方法(非tcpdump)