Spark 原理_逻辑图_HadoopRDD 的生成 | 学习笔记

简介: 快速学习 Spark 原理_逻辑图_HadoopRDD 的生成

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_逻辑图_HadoopRDD 的生成】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Spark 原理_逻辑图_HadoopRDD 的生成


内容简介

一、了解 Spart 原理

二、明确逻辑计划的边界

三、HadoopRDD 的生成

四、Textfile 算子的背后


接下里继续了解 spark 原理,在整个 spark 研究中,有 rdd 如何生成,数据间如何流转,如何去运行 rdd 链条,如何把物理执行图放在集群中,spark shuffle 原理。

了解逻辑执行图分为:明确边界、RDD 如何生成、RDD 之间有哪些依赖关系

 

一、Spark 原理

1.逻辑执行图(RDD 如何生成,数据之间如何流转)

2.物理执行图(如何去循行 RDD 链条)

3.如何运行(如何把物理执行图放在集群中)

4.Spark shuffle 原理

 

二、明确逻辑计划的边界

1.  明确边界//才能知道逻辑执行图是什么,怎么应用,与之前相同的代码,包括 todebugstring

Val sc =...

Val textRDD = sc.parallelize(Seq(Hadoop Spark,Hadoop Flume,Spark Sqoop))

Val splitRDD = texrRDD.flatMAP(_.split(“ ”))

Val tupleRDD = splitRDD.map((_,1))

Val reduceRDD = tupleRDD.reduceByKey(_+_)

Val strRDD = reduceRDD.map(item=>S${item._1},${item._2})

Println(strRDD.toDebugString)

strRDD.collect.foreach(item => println(item))

通过下图可以知道上述代码中的一些列 RDD 是怎么来的

2. action 调用之间,会生成一些列的 RDD,这些 RDD 之间的关系,其实就是整个逻辑计划,例如上述代码,如果生成逻辑计划的,会生成如下一些 RDD ,这些 RDD 是相互关联的,这些 RDD 之间,其实本质上生成的就是一个计算链

image.png

TextRDD 通过 flatmap 生成了 splitRDDsplitRDD 通过 map 生成了 tupleRDD tupleRDD 通过 reducebykey 生成了 reduceRDDreduceRDD 通过 map 生成了 strRDD

逻辑执行图就是这样的一个链条,这个链条就是数据的流转方向,从左到右 流动、执行、运算。

数据从左方来,变成 textRDD,经过 flatmap 的处理对 textRDD 当中的每一条数据进行拆开,变成单独的数据进入 splitRDD,这个链条就是逻辑执行图。

逻辑执行图里研究的就是数据的流转方向,数据从哪来,怎样计算

数据的形成是通过 textRDD 和其中的算子 flatmap 去表达,例如 textRDD 中存放了一万条数据通过,faltmap 形成了 splitRDDflatmap 就是它的计算方式,由 textRDD 计算

注释:

Flatmap 通常称之为 split RDD 的计算函数

textRDD split RDD 的父 RDD,依赖

接下来要去看 splitRDD 是如何生成的,只有知道 rdd 是如何生成的,才能表现成图像,生成 rdd,无非就是去创作 rdd


三、HadoopRDD 的生成

1.进入 源码 中,如图

2.parallelize 改成 textfilepath=...”)

ctrl 点开 textfile,可以看到 textfile 的方法中接收了 path,以及分区数 minpartition

如图:

image.png

3. 点开其中的 hadoopfile 方法,可以看到创建了一个 hadoopRDD,如图:

image.png

说明原本的 textfileRDD //textfile 算子作用是创建一个 hadoopRDDhadoopRDD 就是它生成对象 textfile 的类型。

TextRDD 其实就是一个 hadoopRDD 类型的,回到 sparkcontext

4.点开 hadoopRDD,可以看到 hadoopRDD 其实是 RDD的一个子类,如图:

image.png

5.为什么要叫 hadoopRDD

在整个 spark 当中,RDD 有五大属性,分区列表、计算函数、依赖关系.HadoopRDD 继承了 RDD 的这五个属性,hadoopRDD 的这五个属性有自定义,在 hadoopRDD 的方法中,可以找到 compute 方法,这个方法是一个 override 方法,

也就是说,computer 是在 rdd 类中去定义的,在 hadooprdd 的父类 rdd

注解:compute 方法是 RDD 的方法,hadoopRDD 复写了这个方法,改变了rdd 对象的计算方式

6.在下面中可以看到还存在 hadoopRDDinputFormat 对象

//在学习 hadoop 中,再进入hadoopmap_ computemap 之前,通过 inputFormat 对象读取数据,这里的 inputFormat 就是 hadoopRDD 中的 inputFormat

在这里的 compute 方法中,就是通过hadoop 上的 jiawa 组建去读取 inputFormat 上的文件,如图:

image.png


四、Textfile 算子的背后

在笔记中介绍了读源码的一个步骤,包括那个地方需要注意

研究 rdd 的功能或者表现的时候,其实本质上研究的就是 rdd 中的五大属性,因为 rdd 透过五大属性来提供功能和表现。

所以如果要研究 text field 这个算子,应该从五大属性着手那么第一步就是看看生成的 rdd 是什么类型的 rdd

1.textfile 生成的是 hadoopRDD

2.HadoopRDD Partions 对应了 HIDFS blockshadooprdd 上的分区列表,每个分区就对应了 HDIFS 上的文件的一个 block如图b1 就对应了 p1

3.HadoopRDD compute 函数就是在读取 HIDFS 中的 block,如图 compute 函数就是计算p1 是从 HDFS file b1 中读取出来的

image.png

// rdd 的五大属性:1.分区列表2.计算函数3.依赖关系

4.  整个逻辑图的生成描述数据中的计算从哪来?

总结了解二点

1. 整个逻辑图的生成,就是在描述数据如何计算,其实 RDD 的生成,通过算子在算子内部拗出来的,拗出来的 rdd 可能是 rdd 最外侧,最父类的子类,例如 hadoopRDD 就是 rdd 类的子类

2.HadoopRDD RDD 中的其他子类一样,重写了 RDD 的五大属性,根据这五大属性来实现不同的功能。例如HadoopRDD Partions 对应了 HIDFS blocksHadoopRDD compute 函数就是在读取 HIDFS 中的 block 中读取数据到自己的分区当中

相关文章
|
6天前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
|
6天前
|
存储 分布式计算 数据处理
bigdata-35-Spark工作原理
bigdata-35-Spark工作原理
14 0
|
6天前
|
存储 分布式计算 负载均衡
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
75 0
|
6天前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
166 0
|
6天前
|
SQL 存储 分布式计算
spark执行sql的原理是什么
spark执行sql的原理是什么
12 1
|
6天前
|
存储 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
88 0
|
6天前
|
分布式计算 资源调度 大数据
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
445 0
|
6天前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
168 0
|
6天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
6天前
|
机器学习/深度学习 SQL 分布式计算
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
介绍 Apache Spark 的基本概念和在大数据分析中的应用。