Spark基础入门----框架概述

news2024/11/25 14:46:24

Spark Spark 框架概述

Spark 诞生背景

Apache Spark是用于大规模数据处理的统一分析引擎

Spark 最早源于一片论文,该论文是由加州大学柏克莱分校的Matei Zaharia等人发表。论文中提出了一种弹性分布式数据集(RDD)的概念。
在这里插入图片描述
总的说,Spark借鉴了Map Reduce思想发展而来,保留了其分布式并行计算的优点并改进了明显的缺陷,让中间数据存储在内存中提高了运行速度,并提供了丰富的操作数据的API提高了开发速度。

Spark是一款分布式内存计算的统一分析引擎。
其特点就是对任意类型的数据进行自定义计算。
Spark可以计算:结构化、半结构化、非结构化等各种类型的数据结构,同时也支持使用Python、Java、Scala、R以及SQL语言去开发应用程序计算数据。
Spark的适用面非常广泛,所以,被称之为 统一的(适用面广)的分析引擎(数据处理)

本次学习基于Spark 3.2.0版本学习

在这里插入图片描述
尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop

  • 在计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive
  • Spark仅做计算,而Hadoop生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调度(YARN),HDFS和YARN仍是许多大数据体系的核心架构。

Spark四大特点

速度快:
由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍。Spark处理数据与MapReduce处理数据相比,有如下两个不同点:

  • 其一、Spark处理数据时,可以将中间处理结果数据存储到内存中;
  • 其二、Spark 提供了非常丰富的算子(API), 可以做到复杂任务在一个Spark 程序中完成.

易于使用:
Spark 的版本已经更新到 Spark 3.2.0(截止日期2021.10.13),支持了包括 Java、Scala、Python 、R和SQL语言在内的多种语言。为了兼容Spark2.x企业级应用场景,Spark仍然持续更新Spark2版本。

通用性强:
在 Spark 的基础上,Spark 还提供了包括Spark SQL、Spark Streaming、MLib 及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。
在这里插入图片描述

运行方式多:
Spark 支持多种运行方式,包括在 Hadoop 和 Mesos 上,也支持 Standalone的独立运行模式,同时也可以运行在云Kubernetes(Spark 2.3开始支持)上

对于数据源而言,Spark 支持从HDFS、HBase、Cassandra 及 Kafka 等多种途径获取数据。
在这里插入图片描述

Spark 框架模块

整个Spark 框架模块包含:Spark Core、 Spark SQL、 Spark Streaming、 Spark GraphX、 Spark MLlib,而后四项的能力都是建立在核心引擎之上
在这里插入图片描述
Spark Core:Spark的核心,Spark核心功能均由Spark Core模块提供,是Spark运行的基础。Spark Core以RDD为数据抽象,提供Python、Java、Scala、R语言的API,可以编程进行海量离线数据批处理计算。

SparkSQL:基于SparkCore之上,提供结构化数据的处理模块。SparkSQL支持以SQL语言对数据进行处理,SparkSQL本身针对离线计算场景。同时基于SparkSQL,Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算。

SparkStreaming:以SparkCore为基础,提供数据的流式计算功能。

MLlib:以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等。方便用户以分布式计算的模式进行机器学习计算。

GraphX:以SparkCore为基础,进行图计算,提供了大量的图计算API,方便用于以分布式计算模式进行图计算。

Spark的运行模式

本地模式都是开发和测试,其他模式都可以使用于生产环境。
在这里插入图片描述

Spark的架构角色

YARN角色回顾
YARN主要有4类角色,从2个层面去看:
资源管理层面

  • 集群资源管理者(Master):ResourceManager
  • 单机资源管理者(Worker):NodeManager

任务计算层面

  • 单任务管理者(Master):ApplicationMaster
  • 单任务执行者(Worker):Task(容器内计算框架的工作角色)
    在这里插入图片描述

对照学习 Spark 运行角色
在这里插入图片描述
Spark中由4类角色组成整个Spark的运行时环境

Master 角色,管理整个集群的资源,类比YARN的ResouceManager
Worker 角色,管理单个服务器的资源,类比YARN的NodeManager

Driver角色,管理单个Spark的任务在运行的时候的工作,类比YARN的ApplicationMaster
Executor角色,单个任务运行的时候的一堆工作者,干活的,类比YARN的容器内运行的TASK,

从2个层面划分:
资源管理层面:
管理者: Spark是Master角色,YARN是ResouceManager角色
工作者: Spark是Worker角色,YARN是NodeManager角色

从任务执行层面:
某任务的管理者:Spark是Driver角色,YARN是ApplicationMaster角色
某任务的执行者:Spark是Executor,YARN是容器中运行的具体工作进程。

注意:正常情况下Executor是干活的角色,不过特殊场景下(Local模式),Driver可以既管理又干活

总结

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android进阶——sdk开发和apk开发有什么区别?

sdk SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 apk APK(全称:Android application package,Android应用程序包&#…

【重学Javase】—— 数组(从头剖析一维数组,二维数组,array常用工具类以及数组的两种常见异常)

目录 数组的概述 1、数组的理解: 2、数组的特点: 3、数组的分类: 一维数组 1、一维数组的声明与初始化 2、一维数组元素的引用:通过角标的方式调用 3、数组的属性:length 4、一维数组的遍历(for循…

mysql 备份还原数据库,java使用Runtime对象执行mysqldump备份数据库

为了提高系统可用性,通过java写定时任务每天晚上定时备份mysql数据库,然后把备份的.sql文件(建议在压缩一次上传,减少文件体积提高传输效率)调用文件上传服务器提供的文件上传接口上传到文件服务器,达到数据库服务器损坏后快速还原数据库的目的。以windows系统为例。linux注…

high-resolution image synthesis with latent diffusion models

如何通俗理解扩散模型? - 知乎泻药。实验室最近人人都在做扩散,从连续到离散,从CV到NLP,基本上都被diffusion洗了一遍。但是观察发现,里面的数学基础并不是模型应用的必须。其实大部分的研究者都不需要理解扩散模型的数…

理解linux虚拟网络设备veth

理解linux虚拟网络设备veth 上一章介绍了linux network namespace,接着来讨论一下如何让一个独立的网络命名空间的和主机的网络相互通信,这里我们需要用到linux虚拟网络设备veth。 veth设备 veth设备总是成对出现,通常就是用来连接不同网络命名空间(下面开始简称…

基于线性表的图书管理系统实验报告

目录 基于线性表的图书管理系统实验报告 1、成员分工 2、数据字典 3、抽象数据类型定义 4、图书存储结构描述 5、基本操作的算法描述 6、测试 6.1测试数据集 6.2测试程序运行结果截图 7、存在的问题与思考 基于线性表的图书管理系统实验报告 组长:xxx 组…

2022年学习机器人和人工智能的一些体会

前些日子开会,很受启发,比如有大佬指出: 总结:一般是高屋建瓴,通常是级别高的总揽全局,小虾虾不适用;感想和体会:小虾虾们学习完大佬讲话之后,自己的收获。 这才发现写博…

CRM能给企业带来什么价值

对于任何企业而言,客户都是企业生存下去的根本,管理客户也是企业一直在做的事情,有的企业尝试采用CRM来管理客户,有的企业还在观望CRM能给企业带来什么价值。 前言 对于任何企业而言,客户都是企业生存下去的根本&…

如何增加3d渲染的逼真感?提高3d渲染真实感的技巧

照片写实主义是一种艺术,它需要图形媒体来创造独特的艺术品,看起来非常有说服力。专业艺术家研究图像并使用照片写实技术从中创作艺术品。真实感可以在 2D 和 3D 渲染中实现,该过程称为真实感渲染。专业人士倾向于使用智能渲染过程&#xff0…

管理员权限功能和开机自启功能

前言 开机启动功能在Window下是很重要的一个功能,很多程序它都需要这样的功能 一.VS的配置选项(以管理员权限启动程序) 作用:用户在点击任务栏窗口等需要管理员权限时不会没有响应。 二.开机自启动(注册表&#xff…

解决Navicat打开表的速度慢的问题

前言 最近使用Navicat打开表或者设计表都很慢,需要等十几秒才能打开,一开始我以为是我电脑老了,配置比较差,慢点就慢点吧,好像慢的也比较合理,想到这里我也就没有追究先忍了。 但是这几天公司给我配置的新…

PriorityQueue详解

目录标题前言PriorityQueue特点API构造操作API底层显示:数组offer(E e)前言 PriorityQueue是优先队列,作用是保证每次取出的元素都是队列中权值最小的,这里涉及到了大小关系,元素大小的评判可以通过元素自身的自然顺序&#xff0…

手把手教你搭建环境和内核编译

环境搭建--安装Debian7.3 本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令;现代操作系统的基本概念;C语言和gcc基本使用…

Python操作数据库及Python实现mysql数据库连接池源代码

简介 pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。 MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动…

react-router-dom v6.5.0实现路由守卫RouterBeforeEach及缓存

一、概述 最近留意下react-router-dom有更新到6.6.1的版本,在这个版本增加了不少的功能。研究了下,可以利用其提供的API实现一个类似Vue的路由守卫,从而简便达到路由鉴权的业务场景。这里我是使用npm的包,是react-router-dom v6.5…

leetcode 124. 二叉树中的最大路径和-java题解

题目所属分类 二叉树的最大值 dfs 原题链接 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中…

Web Services 基于Apache Axis2 生成客户端代码示例

webservice 一种古老的技术,现在基本上已经弃用,但也有许多古董项目在用,整理并记录下自己的使用过程,避免更多的人踩坑。 Web Services 生成客户端代码步骤1 Apache Axis2下载安装1.1 认识Apache Axis21.2 下载Apache Axis22 通过…

当地的新员工入职培训

香港 (Xinwengao.com) — 在中国生活和工作的所有外国人都面临文化冲击。在他们的入职前期,学校管理层通常会让他们接受广泛的入职培训。这些培训项目旨在为外籍教师提供文化和专业培训。在外籍教师开始他们的教学之旅之前,向他们灌输文化同理心的美德非…

天气后报网爬虫及数据分析(python)

从天气后报网(http://www.tianqihoubao.com)中爬取绵阳市某一年的历史天气信息,包括每天最高气温、最低气温、天气状况、风向等,完成以下功能: (1)将获取的数据信息存储到“data.csv”文件中&a…

微服务(三)——远程调用

目录前言1. RestTemplate1. 导入依赖2. 代码3. 常用方法2. jodd-http1. 引入依赖2. 代码3. 测试3. Feign1. 引入依赖2. 使用过程3. 自定义配置4. 优化前言 微服务都是独立部署的,要实现一个业务可能需要多个服务之间的通信,所以远程调用必不可少&#x…