bigdata-35-Spark工作原理

简介: bigdata-35-Spark工作原理

首先看中间是一个Spark集群,可以理解为是Spark的 standalone集群,集群中有6个节点

左边是Spark的客户端节点,这个节点主要负责向Spark集群提交任务,假设在这里我们向Spark集群提交了一个任务

那这个Spark任务肯定会有一个数据源,数据源在这我们使用HDFS,就是让Spark计算HDFS中的数据。

当Spark任务把HDFS中的数据读取出来之后,它会把HDFS中的数据转化为RDD,RDD其实是一个弹性分布式数据集,它其实是一个逻辑概念,在这你先把它理解为是一个数据集合就可以了,后面我们会详细分析这个RDD。

在这里这个RDD你就可以认为是包含了我们读取的HDFS上的数据

其中这个RDD是有分区这个特性的,也就是一整份数据会被分成多份,

假设我们现在从HDFS中读取的这份数据被转化为RDD之后,在RDD中分成了3份,那这3份数据可能会分布在3个不同的节点上面,对应这里面的节点1、节点2、节点3

这个RDD的3个分区的数据对应的是partiton-1、partition-2、partition-3

这样的好处是可以并行处理了,后期每个节点就可以计算当前节点上的这一个分区的数据。

这个计算思想是不是类似于MapReduce里面的计算思想啊,本地计算,但是有一点区别就是这个RDD的数据是在内存中的。

假设现在这个RDD中每个分区中的数据有10w条

那接下来我们就想对这个RDD中的数据进行计算了,可以使用一些高阶函数进行计算,例如:flatMap、map之类的

那在这我们先使用flatMap对数据进行处理,把每一行数据转成多行数据

此时flatMap这个函数就会在节点1、节点2和节点3上并行执行了。

计算之后的结果还是一个带有分区的RDD,那这个RDD我们假设存在节点4、节点5和节点6上面。

此时每个节点上面会有一个分区的数据,我们给这些分区数据起名叫partition-4、partition-5、partition-6

正常情况下,前面节点1上的数据处理之后会发送到节点4上面

另外两个节点也是一样的。

此时经过flatmap计算之后,前面RDD的数据传输到后面节点上面这个过程是不需要经过shuffle的,可以直接在内存中通过网络传输过去,因为现在这两个RDD的分区数量是一一对应的。

后面可能还会通过map、或者其它的一些高阶函数对数据进行处理,当处理到最后一步的时候是需要把数据存储起来的,在这我们选择把数据存储到hdfs上面,其实在实际工作中,针对这种离线计算,大部分的结果数据都是存储在hdfs上面的,当然了也可以存储到其它的存储介质中。

好,那这个就是Spark的基本工作原理。

再梳理一下,首先通过Spark客户端提交任务到Spark集群,然后Spark任务在执行的时候会读取数据源HDFS中的数据,将数据加载到内存中,转化为RDD,然后针对RDD调用一些高阶函数对数据进行处理,中间可以调用多个高阶函数,最终把计算出来的结果数据写到HDFS中。

目录
相关文章
|
存储 分布式计算 大数据
hadoop和spark的区别
学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下。在研究、学习hadoop的朋友可以去找一下看看
3816 0
|
2月前
|
分布式计算 资源调度 监控
Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(一)
Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(一)
96 1
|
3月前
|
SQL 分布式计算 Hadoop
Spark与Hadoop的关系和区别
Spark与Hadoop的关系和区别
|
3月前
|
分布式计算 Hadoop 数据处理
Spark与Hadoop的区别是什么?请举例说明。
Spark与Hadoop的区别是什么?请举例说明。
56 0
|
4月前
|
SQL 存储 分布式计算
Hadoop学习笔记(HDP)-Part.02 核心组件原理
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
141 0
Hadoop学习笔记(HDP)-Part.02 核心组件原理
|
8月前
|
存储 分布式计算 资源调度
Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(二)
Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(二)
|
存储 SQL 分布式计算
Hadoop和Spark的异同
Hadoop实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。 HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。 MapReduce,通过简单的Mapper和Reducer的抽象提供一个编程模型,可以在一个由几十台上百台的机器上并发地分布式处理大量数据集,而把并发、分布式和故障恢复等细节隐藏。
|
分布式计算 资源调度 Kubernetes
[翻译]Spark on MR3——运行 Apache Spark 的新方式
> 此文是对 Spark on MR3 资料的翻译 原文链接:https://www.datamonad.com/post/2021-08-18-spark-mr3/ 代码链接:https://github.com/mr3project/spark-mr3 MR3 是一个通用的执行引擎,原生支持 Hadoop 和 Kubernetes。虽然 Hive on MR3 是主要应用,但 MR3 也可以
427 0
[翻译]Spark on MR3——运行 Apache Spark 的新方式
|
分布式计算 大数据 Spark
Spark 集群搭建_Spark 集群结构|学习笔记
快速学习 Spark 集群搭建_Spark 集群结构
185 0
Spark 集群搭建_Spark 集群结构|学习笔记
|
存储 分布式计算 Hadoop
【Spark】Spark 与 Hadoop MR 之间的区别
【Spark】Spark 与 Hadoop MR 之间的区别
247 0