大数据技术---Spark

article/2025/9/15 11:03:04

一、Spark简介

1、Spark概述
Spark:由美国加州伯克利大学的AMP实验室于2009年开发,基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
三大分布式计算系统开源项目:Hadoop、Spark、Storm。
Spark的特点:
(1)运行速度块:使用DAG执行引擎以支持循环数据流与内存计算。
(2)容易使用:支持使用scala、Java、python和R语言进行编程,可以通过spark shell进行交互式编程。
(3)通用性:Spark提供了完整强大的技术栈,包括SQL查询、流式计算、机器学习和图算法等。
(4)运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问hdfs,hbase,hive等多种数据源。

2、Scala概述
Scala:现代的多范式编程语言,运行于Java平台,并兼容现有的Java程序。
Scala特性:
(1)具备强大的并发性,支持函数式编程,可以更好的支持分布式系统;
(2)兼容Java,运行速度快;
(3)语法简洁,能提供优雅的api。
Scala是spark的主要编程语言,优势是提供了REPL(交互式解释器),提高程序开发效率。

3、Spark与Hadoop对比?
Hadoop缺点:表达能力有限、磁盘IO开销大、延迟高、任务之间的衔接涉及IO开销、在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂,多阶段的计算任务。
Spark的优点:
(1)Spark计算模式也属于Map Reduce,但不局限于map和reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop mapreduce更灵活。
(2)Spark还提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高。
(3)Spark基于DAG的任务调度执行机制,要由于Hadoop的迭代执行机制。
在这里插入图片描述
在这里插入图片描述

二、Spark生态系统

在实际应用中,大数据处理主要包括以下三个类型:
1、复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间。比如Hadoop MapReduce。
2、基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间。比如Cloudera Impala。
3、基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间。比如Storm。
可能存在的问题:
1、不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格式的转换。
2、不同的软件需要不同的开发和维护团队,带来了较高的使用成本。
3、比较难以对同一个集群中的各个系统进行统一的资源协调和分配。
Spark可以部署在资源管理器YARN之上,提高一站式的大数据解决方案。
在这里插入图片描述

三、Spark运行架构

1、基本概念
在这里插入图片描述
2、运行架构
在这里插入图片描述
架构设计的优点:
(1)利用多线程来执行具体的任务,减少任务的启动开销。
(2)Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO 开销。
相互关系:
在这里插入图片描述
在这里插入图片描述
3、Spark运行的基本流程
在这里插入图片描述
(1)为应用程序构建基本的运行环境,由driver创建一个sparkcontext进程资源的申请、任务的分配和监控;
(2)资源管理器会为executor分配资源,并启动executor;
(3)sparkcontext根据RDD的依赖关系构建DAG图,DAG图提交给DAGSchedule解析成stage,然后把一个个taskset提交给底层调度器taskschedule处理。executor向sparkcontext申请task,taskschedule将task发放给executor运行;
(4)task在executor上运行把执行结果反馈给taskschedule,然后反馈给DAGSchedule,运行完毕后写入数据并释放所有资源。

4、Spark运行架构的特点
(1)每个application都有自己专属的executor进程,并且该进程在application运行期间 一直驻留。executor进程以多线程的方式运行task。
(2)spark运行过程与资源管理器无关,只要能够获取executor进程并保持通信即可。
(3)task采用了数据本地性(计算向数据靠拢)和推测执行(任务执行推测)等优化机制。

5、RDD
设计背景:许多迭代式算法和交互式数据挖掘工具,共同的是不同计算阶段之间会重用中间结果。目前的mapreduce是将中间的计算结果保存在磁盘中,带来大量的数据复制、磁盘IO和序列化开销。
RDD:一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分为多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作而创建得到新的RDD。
在这里插入图片描述
RDD执行过程:
(1)RDD读入外部数据据源进行创建;
(2)RDD经过一系列的转换操作,每一次都会产生不同的RDD供给下一个转换操作使用;
(3)最后一个RDD经过动作操作进行计算并输出到外部数据源。
在这里插入图片描述
优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单。

RDD特性:
(1)高效的容错性
传统容错方式:数据复制或记录日志。
RDD具有天生的容错性:血缘关系、重新计算分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作。
(2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销。
(3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化。

RDD的依赖关系:
窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对于于一个子RDD。如图所示:RDD1、RDD6为父分区,RDD2,RDD8为子分区(一对一,多对一)。
宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区(多对多)。
在这里插入图片描述
Stage的划分:
在DAG中进行反向解析,遇到宽依赖就断开,遇到窄依赖就把它当前的RDD加入到stage中,将窄依赖尽量划分在同一个stage中,可以实现流水线计算,从而使得数据可以直接在内存中进行交换,避免了磁盘IO开销。
在这里插入图片描述
Stage类型:
(1)ShuffleMapStage:不是最终的stage,在它之后还有其他的stage,它的输出一定需要经过shuffle过程,并作为后续stage的输入。
(2)ResultStage:最终的stage,没有输出,而是直接产生结果或存储。在一个job中有多个stage,至少包含一个ResultStage。

RDD运行过程:
在这里插入图片描述
6、Spark SQL
Shark:即hive on spark ,为了实现于hive兼容,shark在hiveQL方面重用了hive中hiveQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似任务仅将物理执行计划从MapReduce作业替换成了spark作业,通过hive的hiveQL解析,把hiveQL翻译成spark上的RDD操作。
在这里插入图片描述
Spark SQL:Spark SQL在hive兼容层面仅依赖hiveQL解析、hive元数据。从HQL被解析成抽象语法树起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责。


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

相关文章

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. 锻炼码力。这个作业在哪个具体方面帮助我实现目标深入分析软件性能,了解软件测评流程和软件市场需求 产品选择 本次作业&…

照片做视频哪个软件好?简单但好用

现在看到大多数人都在用数码大师吧。我平时给我朋友做照片视频都用这个。 主要是做起来简单,而且上手很快,里面的特效也有很多不同的风格。 我都拿来导出1080P全高清视频,上传到网站上或者在自家电视机上都能播放。 大家可以看看我做的效果…

教你如何把照片做成视频,可做生日party、企业年会、求婚mv视频

相片制作成视頻的模式在日常生活中愈来愈常见,如:生日party、企业年会、求婚mv视频等,并且把相片制作成带歌曲的视頻,更为易于保存,留作纪念。今天,小编就教大伙儿如何把相片制作成视頻,还带歌曲…