深入 rdd_定义_五大属性 | 学习笔记

简介: 快速学习 深入 rdd_定义_五大属性

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段深入 rdd_定义_五大属性】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/11964


深入 rdd_定义_五大属性


内容介绍:

一、序言

二、rdd 的四个需求

三、根据需求设计

四、总结

五、回归脑图


一、序言

想要深入了解 rdd,就站在设计者的立场,去思考所面临的问题,以及如何设计 rdd 解决这些问题,所以通过学习rdd 内部的五大属性试图去理解一下 rdd 的设计者、创建者,对于 rdd 的期待和理解。

 

二、rdd 的四个需求

首先 rdd 要并行的计算,所以 rdd 必须要有分区,第二 rdd 要容错,所以 rdd 要记录依赖,还要记录计算函数。第三 rdd 要针对数据本地性进行优化,那 rdd 是应该支持 MapReduce 的计算,这也是 rdd 的需求,map 可能有1万个,reduce 可能只有五个,所以 map reduce 之间是要有一个随机分组,也就是有一个 shuffled 的过程,所以rdd 也要进行 shuffledrdd MapReduce 的继任者,所以 rdd 也要有相对应的计算方式。以上就是 rdd 的几个需求。

 

三、根据需求设计

首先第一点,因为 rdd 需要分区,那么必须要有 partition list 来记录分区列表线路,有几个分区。这是 rdd 的属性之一。

rdd 为了能够容错,就需要去记录 rdd 的父属是谁,记录下 rdd dependencies,即第一第二第三的计算流程,这就是进行容错的基础。接下来还需要记录 computer function,即通过 rdd2计算 rdd3的计算函数。

如果 rdd 要支持 shuffled MapReduce,那么就会有很多的分区,例如有俩个 rdd,第一个 rdd 有三个分区,第二个 rdd 有俩个分区。那么这俩个 rdd 之间就需要进行 shuffled 的操作。在这个过程中,每个分区之间要进行的不同的交换,其中的关系是如何的,即 partitional

Rdd 有一个优化叫移动计算比移动数据好,所以起码需要记录一下,放在哪台机器上即 preferred  location 优化位置。

首先整理一下上面所提到的 RDD 所要实现的功能:

1.RDD 有分区

2.RDD 要可以通过依赖关系和计算函数进行容错

3. RDD 要针对数据本地性进行优化

4.RDD 支持 MapReduce 形式的计算,所以要能够对数据进行 Shuffled

对于 RDD 来说,其中应该有什么内容呢?如果站在 RDD 设计者的角度上,这个类中,至少需要什么属性?

Partition List 分片列表,记录 RDD 的分片,可以在创建 RDD 的时候指定分区数目,也可以通过算子来生成新的 RDD 从而

变分区数目

Compute Function 为了实现容错,需要记录 RDD 之间转换所执行的计算函数

RDD Dependencies RDD 之间的依赖关系,要在 RDD 中记录其上级 RDD是谁,从而实现容错和计算

Partitioner 为了执行 Shuffled 操作,必须要有一个函数用来计算数据应该发往哪个分区

Preferred Location 优先位置,为了实现数据本地性操作,从而移动计算而不是移动存储,需要记录每个 RDD 分区最好应该置在什么位置

 

四、总结

第一是 rdd 任务要分区,所以必须要记录 rdd 有几个分区,RDD Dependencies 就是需要记录 rdd 的依赖关系,是为了容错,那么就需要通过上一个 rdd 来计算当前 rdd,就需要记录 Compute Function,即计算函数。既然需要支持 MapReduce,那么在 map reduce 之间,要进行 shuffled,就涉及到数据的分发,即 partition。最后就是要记录 rdd 的最佳位置,尽可能的把 rdd 的分区调度到数据存放的位置。

 

五、回归脑图

首先做了一个案例,根据这个案例,提出了一系列问题,比如说如何放在集群中执行,如何进行计算,如何容错,rdd依赖链过长时如何进行拆解,还对 rdd 的定义进行了深入了解,rdd 为什么会出现,rdd 有什么特点,什么叫做弹性分布式数据集,接下来还对 rdd 进行了拓展,了解了 rdd 的五个属性,这五个属性都是为了实现 rdd 的某些功能,这五大属性即为:Partition List Compute Function RDD Dependencies Preferred Location

相关文章
|
监控 Linux
Linux 进程标识符:深入探讨 getpid() 和 getppid()
在Linux操作系统中,进程管理是一项重要的任务。为了正确管理和监控进程,我们需要了解如何获取进程的标识符。本文将详细介绍两个重要的Linux系统调用函数:`getpid()`和`getppid()`。这两个函数用于获取当前进程的进程ID(PID)和父进程的PID。我们将深入探讨它们的用途、使用方法以及示例代码。
3054 0
|
安全 Linux iOS开发
Anaconda下载及安装保姆级教程(详细图文)
Anaconda下载及安装保姆级教程(详细图文)
35153 1
Anaconda下载及安装保姆级教程(详细图文)
|
jenkins 持续交付
Jenkins 问题 No such plugin: cloudbees-folder
Jenkins 问题 No such plugin: cloudbees-folder
883 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
GraphAgent:自动构建知识图谱,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系
GraphAgent 是香港大学和香港科技大学联合推出的智能图形语言助手,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系。
765 9
GraphAgent:自动构建知识图谱,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的绩效管理与考核
【7月更文挑战第25天】 ERP系统中的绩效管理与考核
613 2
|
存储 网络协议 API
详解Python中的Requests会话管理
详解Python中的Requests会话管理
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
428 6
|
设计模式 uml
设计模式常用的UML图------类图
这篇文章介绍了UML中类图的基本概念和用途,详细解释了类与接口、类之间的关系,包括继承、实现、组合、聚合、关联和依赖等六种关系,并展示了它们在类图中的表示方法。
设计模式常用的UML图------类图
|
网络协议 API 开发者
Python中的会话管理:requests.Session深度解析
Python中的会话管理:requests.Session深度解析