1. RDD基本概念

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表了一个弹性的、不可变的、可分区、里面的元素可并行计算的集合。

1.1 弹性

  • 存储的弹性:内存和磁盘的自动切换

    • 因为内存是有限制的,如果使用的内存超过了一定的阈值,会将部分数据切换到磁盘上
  • 容错的弹性:数据丢失可以自动回复
  • 计算的弹性:计算出错重试机制
  • 分片的弹性:可以根据需求重新分片

1.2 分布式

  • 数据存储在大数据集群的不同节点上

1.3 数据集

  • RDD封装了计算逻辑,并不保存数据

1.4 数据抽象

  • RDD是一个抽象类,具体需要子类来实现

1.5 不可变

  • RDD封装了计算逻辑,是不可以改变的。想要改变只能产生新的RDD,在新的RDD里面封装计算逻辑(装饰器)

1.6 可分区、并行计算

RDD是一个逻辑上虚拟的集合,内部会拆分成多个partition 的 task,分配给executor

2. WordCount为例,看RDD特性

  • RDD的数据处理方式类似于IO流,也有装饰者模式
  • RDD的数据只有在调用collect方法时,才会真正执行业务逻辑的计算操作,前面都是在叠buff
  • 与IO流能暂时缓存一部分数据(缓冲区)不同,RDD中间不缓存任何数据

3. RDD的五大属性

Internally, each RDD is characterized by five main properties:

  • A list of partitions
  • A function for computing each split
  • A list of dependencies on other RDDs
  • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
  • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

3.1 分区列表

如上图,由于RDD内直接分区了,所以需要分区列表

3.2 计算逻辑 compute

针对该RDD下的所有分区,compute都是一样的

3.3 和其他RDD的依赖关系

3.4 (可选) 分区器

3.5 (可选) executor节点亲和

如下,其实任务发送给上面的

4. RDD执行原理(yarn环境)

4.1 启动Yarn集群环境

4.2 Spark通过申请资源创建调度节点和计算节点

4.3 Spark框架根据需求将计算逻辑根据分区划分成不同的任务。此处会将task放置到 任务池中

4.4 调度节点将任务根据计算节点状态发送到对应的计算节点进行计算

从以上流程可以看出RDD在整个流程中主要用于将逻辑进行封装,并生成Task发送给Executor节点执行计算。

spark (四) RDD概念的更多相关文章

  1. spark实验(四)--RDD编程(1)

    一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:centos6.4 Spark 版本:1.5.0 ...

  2. Spark核心—RDD初探

    本文目的     最近在使用Spark进行数据清理的相关工作,初次使用Spark时,遇到了一些挑(da)战(ken).感觉需要记录点什么,才对得起自己.下面的内容主要是关于Spark核心-RDD的相关 ...

  3. 关于Spark中RDD的设计的一些分析

    RDD, Resilient Distributed Dataset,弹性分布式数据集, 是Spark的核心概念. 对于RDD的原理性的知识,可以参阅Resilient Distributed Dat ...

  4. RDD概念、特性、缓存策略与容错

    一.RDD概念与特性 1. RDD的概念 RDD(Resilient Distributed Dataset),是指弹性分布式数据集.数据集:Spark中的编程是基于RDD的,将原始数据加载到内存变成 ...

  5. spark中RDD的转化操作和行动操作

    本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...

  6. [转]Spark学习之路 (三)Spark之RDD

    Spark学习之路 (三)Spark之RDD   https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...

  7. Spark学习之路 (三)Spark之RDD

    一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...

  8. Spark系列-核心概念

    Spark系列-初体验(数据准备篇) Spark系列-核心概念 一. Spark核心概念 Master,也就是架构图中的Cluster Manager.Spark的Master和Workder节点分别 ...

  9. Spark Streaming核心概念与编程

    Spark Streaming核心概念与编程 1. 核心概念 StreamingContext Create StreamingContext import org.apache.spark._ im ...

  10. Spark中RDD的常用操作(Python)

    弹性分布式数据集(RDD) Spark是以RDD概念为中心运行的.RDD是一个容错的.可以被并行操作的元素集合.创建一个RDD有两个方法:在你的驱动程序中并行化一个已经存在的集合:从外部存储系统中引用 ...

随机推荐

  1. C#使用Kubernetes (k8s)

    在C#中使用Kubernetes (k8s) 通常通过官方的Kubernetes .NET客户端与Kubernetes API进行交互.以下是如何在C#中使用Kubernetes的简要指南. 1. 安 ...

  2. Next.js 与 React 全栈开发:整合 TypeScript、Redux 和 Ant Design

    在上一集,我们编写完毕导航页面,并且非常的美观,但是我们发现编写网站是存静态的,在现代的网站当中一般都是动静结合,也就是说部分数据是从数据库读取的,部分静态数据是写在网页上面的,因此这章讲述如何搭建一 ...

  3. 科技论文在methodology部分应该使用什么语态?

    什么神奇的事情,在计算机领域的论文中,如果没有特殊的必要非要用过去式,那么一律使用一般现在时,十分神奇. 或许在计算机领域论文中这一点比较特殊,也可能是大家都这么用也就这样了. 总结来说,在计算机领域 ...

  4. 2-4 C++ const限定词

    目录 2.4.1 const之于基本类型(base type) 含义 编译过程 2.4.2 const之于引用 含义 作用 注意点 2.4.3 const之于指针 含义[两类] 变量定义的读法:从左往 ...

  5. P4119 Ynoi2018 未来日记

    P4119 Ynoi2018 未来日记 lxl 出的题好 duliu 啊. 感谢来自 fr200110217102 的博客 题解 P4119 [Ynoi2018未来日记]. 下标分块+值域分块+并查集 ...

  6. MySQL报错注入之Xpath报错&floor函数报错

    目录 前言 Xpath报错注入 updatexml()函数 extractvalue()函数 floor函数报错 count与group by的虚拟表 总结 PostGIS函数报错 ST_LatFro ...

  7. golang之枚举类型iota

    枚举类型是一种常用的数据类型,用于表示一组有限的.预定义的.具名的常量值.在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一. 枚举类型通常用于表示一组相关的常量,比如星期.月份.性别等等. ...

  8. Linux防火墙工具之firewall

    CentOS7 的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本Centos 6.x使用iptables不一样 一.iptables防火墙1. ...

  9. Tornado框架之异步与WebSocket(五)

    知识点 理解同步与异步执行过程 理解异步代码的回调写法与yield写法 Tornado异步 异步Web客户端AsyncHTTPClient tornado.web.asynchronous torna ...

  10. 如何使用docsify搭建自己的github文档?

    安装前提 确认电脑已经安装好 node 和 npm 环境. 如果还没有装好,那需要执行下面的步骤: 1.进入官网:https://nodejs.org/zh-cn/ , 下载长期支持版. 2.安装就直 ...