大数据框架之Spark详解

article/2025/9/15 10:41:53

目录

  • 1 Spark概述
    • 1.1 Spark是什么?
    • 1.2 Spark内置模块
    • 1.3 Spark 特点
  • 2 RDD概述
    • 2.1 什么是RDD?
    • 2.2 RDD的属性
    • 2.3 RDD特点
    • 2.4 弹性体现在哪?
    • 2.5 分区
    • 2.6 分区
    • 2.7 依赖
    • 2.8 缓存
    • 2.9 CheckPoint

1 Spark概述

1.1 Spark是什么?

Spark是一种基于内存的快速、通用、可扩展的大数据分析引擎。

1.2 Spark内置模块

在这里插入图片描述
Spark Core:实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储
系统交互等模块。Spark Core 中还包含了对弹性分布式数据集(Resilient Distributed
DataSet,简称 RDD)的 API 定义。

Spark SQL: 是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用
SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,
比如 Hive 表、Parquet 以及 JSON 等。

Spark Streaming: 是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数
据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

Spark MLlib: 提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同
过滤等,还提供了模型评估、数据 导入等额外的支持功能。

集群管理器: Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计
算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(Cluster
Manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度
器,叫作独立调度器。

Spark 得到了众多大数据公司的支持,这些公司包括 Hortonworks、IBM、Intel、
Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的
Spark 已应用于大搜索、直达号、百度大数据等业务;阿里利用 GraphX 构建了大规模的图
计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯 Spark 集群达到 8000 台的规
模,是当前已知的世界上最大的 Spark 集群。

1.3 Spark 特点

**1)快:**与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以
上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。计算的中间结果是存在于内存中
的。
2)易用: Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应
用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便地在这些Shell中使用Spark集群来验证解决问
题的方法。
3)通用: Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理
(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应
用中无缝使用。减少了开发和维护的人力成本和部署平台的物力成本。
4)兼容性: Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和
Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase等。这对
于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。

2 RDD概述

2.1 什么是RDD?

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

2.2 RDD的属性

在这里插入图片描述
(1)一组分区(Partition),即数据集的基本组成单位;
(2)一个计算每个分区的函数;
(3)RDD 之间的依赖关系;
(4)一个 Partitioner,即 RDD 的分片函数;
(5)一个列表,存储存取每个 Partition 的优先位置(preferred location)。

2.3 RDD特点

RDD 表示只读的分区的数据集,对 RDD 进行改动,只能通过 RDD 的转换操作,由一个 RDD 得到一个新的 RDD,新的 RDD 包含了从其他 RDD 衍生所必需的信息。RDDs 之间存在依赖,RDD 的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD 来切断血缘关系。

2.4 弹性体现在哪?

  • 存储的弹性:内存与磁盘的自动切换;
  • 容错的弹性:数据丢失可以自动恢复;
  • 计算的弹性:计算出错重试机制;
  • 分片的弹性:可根据需要重新分片。

2.5 分区

RDD 逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个 compute函数得到每个分区的数据。如果 RDD 是通过已有的文件系统构建,则 compute 函数是读取指定文件系统中的数据,如果 RDD 是通过其他 RDD 转换而来,则 compute 函数是执行转换逻辑将其他 RDD 的数据进行转换。

2.6 分区

RDD 是只读的,要想改变 RDD 中的数据,只能在现有的 RDD 基础上创
建新的 RDD。

由一个 RDD 转换到另一个 RDD,可以通过丰富的操作算子实现,不再像 MapReduce那样只能写 map 和 reduce 了。

RDD 的操作算子包括两类,一类叫做 transformations,它是用来将 RDD 进行转化,构建 RDD 的血缘关系;另一类叫做 actions,它是用来触发 RDD 的计算,得到 RDD 的相关计算结果或者将 RDD 保存的文件系统中。下图是 RDD 所支持的操作算子列表。

2.7 依赖

RDDs 通过操作算子进行转换,转换得到的新 RDD 包含了从其他 RDDs 衍生所必需的信息,RDDs 之间维护着这种血缘关系,也称之为依赖。如下图所示,依赖包括两种,一种是窄依赖,RDDs 之间分区是一一对应的,另一种是宽依赖,下游 RDD 的每个分区与上游RDD(也称之为父 RDD)的每个分区都有关,是多对多的关系。
在这里插入图片描述

2.8 缓存

如果在应用程序中多次使用同一个 RDD,可以将该 RDD 缓存起来,该 RDD 只有在第一次计算的时候会根据血缘关系得到分区的数据,在后续其他地方用到该 RDD 的时候,会直接从缓存处取而不用再根据血缘关系计算,这样就加速后期的重用。如下图所示,RDD- 1 经过一系列的转换后得到 RDD-n 并保存到 hdfs,RDD-1 在这一过程中有个中间结果,如果将其缓存到内存,那么在随后的 RDD-1 转换到 RDD-m 这一过程中,就不会计算其之前的 RDD-0 了。
在这里插入图片描述

2.9 CheckPoint

虽然 RDD 的血缘关系天然地可以实现容错,当 RDD 的某个分区数据失败或丢失,可以通过血缘关系重建。但是对于长时间迭代型应用来说,随着迭代的进行,RDDs 之间的血缘关系会越来越长,一旦在后续迭代过程中出错,则需要通过非常长的血缘关系去重建,势必影响性能。为此,RDD 支持 checkpoint 将数据保存到持久化的存储中,这样就可以切断之前的血缘关系,因为 checkpoint后的RDD 不需要知道它的父RDDs 了,它可以从 checkpoint处拿到数据。


http://chatgpt.dhexx.cn/article/TeAhuU5c.shtml

相关文章

大数据学习 之 Spark 概述

文章目录 一、Spark简介Spark与Hadoop的区别部署模式 二、 Spark架构1.Driver2.Executor3.Master & Worker4.Cluster manager5.ApplicationMaster补充点:Stage执行过程 三、Shuffle机制shuffle介绍Shuffle的影响导致Shuffle的操作 四、RDD(弹性分布式…

大数据技术---Spark

一、Spark简介 1、Spark概述 Spark:由美国加州伯克利大学的AMP实验室于2009年开发,基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。 三大分布式计算系统开源项目:Hadoop、Spark、Storm。 Spark的…

KB、MB、GB等和KiB、MiB、GiB等的区别

今天装系统RHEL7.7,在分区时发现单位变成MiB、GiB了,有点奇怪就查了查。 区别: KB、MB、GB等单位以10为底数的指数 KiB、MiB、GiB等单位是以2为底数的指数 如:1KB10^31000, 1MB10^610000001000KB,1GB10^910000000001000MB,而 …

asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).

webpack打包提示文件体积过大导致: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 Ki…

当git clone遇到client_loop:send disconnect: Connection reset by peer00 Kib/s

当git clone遇到client_loop:send disconnect: Connection reset by peer00 Kib/s 1. 问题描述2.问题解决3.原因分析 1. 问题描述 刚换了新电脑,重新配置了下git仓库的ssh后,迫不及待想 git clone 先项目。发现遇到个问题: 在执行 git clone…

Kibana

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。 你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。…

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB)

Taro打包h5体积限制 警告: WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). 可以使用webpack-bundle-analyzer插件对打包体积进行分析,参考代码: webpackChain (chain) {chain.plug…

【名词解释】KiB和KB,MiB和MB,GiB和GB 等的区别以及1M带宽到底是多少?

目录 1. KiB和KB,MiB和MB,GiB和GB 2. 宽带速度 3. 单位换算 1. KiB和KB,MiB和MB,GiB和GB KiB和KB,MiB和MB,GiB和GB 等的区别: 1KB(kilobyte)10^31000byte, 1KiB(kibibyte)2^101024byte …

b、B、KB、Kib、MB、MiB、GB、GiB、TB、TiB的区别

1024这个数字,想必计算机行业从业人员应该不会陌生,甚至10月24日还被当做程序员日,如果你问一个程序员1GB等于多少MB,他大概率会不假思索回答:1024。 没错,对于稍微对计算机或者网络有了解的人,一般都认为1024是数据容…

KB和KiB的区别是什么?

KB和KiB的区别是什么? 文章目录 KB和KiB的区别是什么?前言MB与MiB的区别:KB和KiB的区别为什么买到的硬盘容量总是会少一些? 前言 今天整理资料时发现使用windows自带的资源管理器查看文件夹大小时计算很缓慢, 机智的我想到了使用dir命令来查看 哈哈~…

KiB是什么单位

kiB1024byte kb1000byte

linux必备软件合集

Ubuntu常用软件合集 我用的使Ubuntu-Kylin14.04,原因呢主要是觉得使本土化的,自带了日历、输入法、优客助手等易于上手的应用。也省的每次安装完原生的系统再麻烦的安装,但是这些软件并不仅仅局限于ubuntu14.04 美化篇 刚装上ubuntu,看起来很朴素&…

软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。

欢迎来到第 82 期!这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布。 本期看点:B站是如何建设移动真机测试集群的?百人测试团队的测试效能体系应该如何建设?闲鱼交易链路自动化回归测试是怎么做的&#…

傻瓜式安装stable diffusion图像生成软件

目录 1、打开:https://colab.research.google.com/ 2、复制一下代码: 3、粘贴到下方,按运行按钮。 4、打开安装好的软件。上框复制以下代码: 5、下框复制以下代码: 6、如下图设置及操作: 1、打开&#…

html如何用mp4做背景音乐,如何用相片制作mv配上流行mp3背景音乐 打造自己的mv

准备好自己的相片,支持的相片(图片)格式为office powerpoint支持的就可以。具体支持什么相片格式,如何用相片制作mv再配上背景音乐呢;整个操作步骤是很简单的,如果是刚开始学习并对相关制作不太了解的朋友可能要多认真花点时间了解…

软件工程复习笔记

文章目录 1、软件工程概论(1)背景:软件危机表现方法软件工程管理软件工程技术 原因 (2)软件工程定义三要素生命周期软件定义软件开发运行维护 2、过程模型(1)瀑布模型特点优点缺点适用场合 &…

软件测试面试大全

软件测试面试大全 一、软件测试基础部分1、软件项目成员有哪些?2、软件的概念是什么?3、你对软件测试的定义是怎么的?4、你对软件Bug的概念是怎样的?5、软件Bug级别有几种?6、软件Bug状态有哪些?7、你对软件…

安卓机如果相册不选图片就退出_教你怎么把照片制作成电子相册

现在的我们都喜欢到处拍照,智能手机的出现以及越来越高清的相机,都给我们的拍照提供了太多的便利和可能,但是照片太多了以后就会堆积在电脑硬盘或者手机链里,想要从中观看、查找某一张都变的非常吃力,这个时候我们为何…

计算机如何制作音乐相册,怎么制作音乐相册?如何使用照片来制作音乐mv?照片制作成电子相册的方法...

最近又双叒叕降温啦,悄咪咪的就开始降温了,不过嘛,都快过年了,降温了才有冬天的感觉嘛。哈哈,好啦,进入今天的正题,在平时,遇见喜欢的音乐有没有想过要来为其制作MV呢?也…

软件案例分析——两大音乐软件的PK

项目内容这个作业属于哪个课程软件工程这个作业的要求在哪里软件案例分析我在这个课程的目标是1. 体验体系化、规范化的软件工程实践流程 2. 锻炼码力。这个作业在哪个具体方面帮助我实现目标深入分析软件性能,了解软件测评流程和软件市场需求 产品选择 本次作业&…