Spark 框架概述

目录

一、Spark 是什么

1.1 统一分析引擎? 

二、Spark 风雨十年

​三、Spark VS Hadoop(MapReduce)

3.1 面试题:Hadoop 的基于进程的计算和 Spark 基于线程方式优缺点?

四、Spark 四大特点 

​4.1 速度快 

4.2 易于使用 

4.3 通用性强 

​4.4 运行方式 

五、Spark 框架模块

5.1 介绍 

5.2 Spark 的运行模式 

5.3 Spark 的架构角色 

5.3.1 YARN 角色回顾 

​5.3.2 Spark 运行角色 


一、Spark 是什么

Apache Spark 是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。

        Spark 最早源于一篇论文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing,该论文是由加州大学柏克莱分校的 Matei Zaharia 等人发表的。论文中提出了一种弹性分布式数据集(即 RDD)的概念。 

        翻译过来就是:RDD 是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也是整个 Spark 的核心数据结构,Spark 整个平台都围绕着 RDD 进行。 

        简而言之,Spark 借鉴了 MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷。让中间数据存储在内存中提高了运行速度、并提供丰富的操作数据的 API 提高了开发速度。 

1.1 统一分析引擎? 

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

Spark 的适用面非常广泛,所以,被称之为统一的(适用面广)的分析引擎(数据处理) 。

二、Spark 风雨十年

        Spark 是加州大学伯克利分校 AMP 实验室(Algorithms Machines and People Lab)开发的通用大数据处理框架。

Spark 的发展历史,经历过几大重要阶段,如下图所示: 

        从下面的 Stack Overflow 的数据可以看出,2015 年开始 Spark 每月的问题提交数量已经超越 Hadoop,而 2018 年 Spark Python 版本的 API PySpark 每月的问题提交数量也已超过 Hadoop。2019 年排名 Spark 第一,PySpark 第二;而十年的累计排名是 Spark 第一,PySpark 第三。按照这个趋势发展下去,Spark 和 PySpark 在未来很长一段时间内应该还会处于垄断地位。 

三、Spark VS Hadoop(MapReduce)

尽管 Spark 相对于 Hadoop 而言具有较大优势,但 Spark 并不能完全替代 Hadoop:

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

3.1 面试题:Hadoop 的基于进程的计算和 Spark 基于线程方式优缺点?

答案:Hadoop 中的 MR 中每个 map/reduce task 都是一个 java 进程方式运行,好处在于进程之间是互相独立的,每个 task 独享进程资源,没有互相干扰,监控方便,但是问题在于 task 之间不方便共享数据,执行效率比较低。比如多个 map task 读取不同数据源文件需要将数据源加载到每个 map task 中,造成重复加载和浪费内存。而基于线程的方式计算是为了数据共享和提高执行效率,Spark 采用了线程的最小的执行单位,但缺点是线程之间会有资源竞争。 

【扩展阅读】:线程基本概念

  • 线程是 CPU 的基本调度单位;
  • 一个进程一般包含多个线程, 一个进程下的多个线程共享进程的资源;
  • 不同进程之间的线程相互不可见;
  • 线程不能独立执行;
  • 一个线程可以创建和撤销另外一个线程 。

四、Spark 四大特点 

4.1 速度快 

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

Spark 处理数据与 MapReduce 处理数据相比,有如下两个不同点:

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

4.2 易于使用 

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

4.3 通用性强 

        在 Spark 的基础上,Spark 还提供了包括 Spark SQL、Spark Streaming、MLib 及GraphX 在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。 

4.4 运行方式 

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

对于数据源而言,Spark 支持从 HDFS、HBase、Cassandra 及 Kafka 等多种途径获取数据。 

五、Spark 框架模块

5.1 介绍 

        整个 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,方便用于以分布式计算模式进行图计算。 

5.2 Spark 的运行模式 

Spark提供多种运行模式,包括:

  • 本地模式(单机)

本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个 Spark 运行时环境。

  • Standalone 模式(集群)

Spark 中的各个角色以独立进程的形式存在,并组成 Spark 集群环境。

  • Hadoop YARN 模式(集群)

Spark 中的各个角色运行在 YARN 的容器内部,并组成 Spark 集群环境。

  • -Kubernetes 模式(容器集群)

Spark 中的各个角色运行在 Kubernetes 的容器内部,并组成 Spark 集群环境。

5.3 Spark 的架构角色 

5.3.1 YARN 角色回顾 

YARN 主要有 4 类角色,从 2 个层面去看:

资源管理层面

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

任务计算层面

  • 单任务管理者(Master):ApplicationMaster
  • 单任务执行者(Worker):Task(容器内计算框架的工作角色) 

5.3.2 Spark 运行角色 

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

上一篇文章:HDFS 架构剖析_Stars.Sky的博客-CSDN博客

下一篇文章:Spark-3.2.4 高可用集群安装部署详细图文教程_Stars.Sky的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将安防视频监控系统/视频云存储EasyCVR平台推流到公网直播间?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

脸鉴AI开放平台:轻松上手的人工智能算法

序言 一、提升开发效率工具 1.1封装view窗口 1.2封装常用功能接口 1.3提供基础接口代码块 二、使用介绍 2.1 注册&登录 2.2 新建应用 2.3 下载应用 2.4 安装包介绍 2.5 demo项目 2.6 配置demo 2.7 运行demo 三、使用结果 3.1 摄像头采集人脸添加模板 3.2 实时画面1:N人脸检…

JS Ajax 封装

ajax 封装 一、 什么是Ajax?二、 Ajax的优缺点?2.1 优点2.2 缺点 三、 Ajax的使用3.1 状态码3.2 xhr的基本使用3.3 ajax原生封装:3.3.1 触发GET请求:3.3.2 调用POST请求: 四、Ajax的约束 一、 什么是Ajax? …

SpringMVC之JSON返回及异常处理

目录 JSON处理 导入依赖 配置Spring-mvc.xml ResponseBody注解使用 测试 目录 JSON处理 导入依赖 配置Spring-mvc.xml ResponseBody注解使用 测试 Jackson 定义 用法 常用注解 统一异常处理 为什么要全局异常处理? 异常处理思路 SpringMVC异常分类 综…

main函数中两个参数的作用

一般我们在使用C语言时不太用到main函数自带的参数,因此最常见的main函数就像下面这样。 int main() {...... }上面这种main函数是省略了其形参的,C语言中规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,其中&…

CAN - 基础

CAN 基础 概念分类特点物理层收发器线与编码方式通信方式采样点/位 常见故障 数据链路层CAN控制器数据帧分类数据帧格式数据帧DBC解析CRC校验远程帧 总线竞争与仲裁非破坏性仲裁机制 节点状态与错误处理机制节点状态错误处理机制错误帧 概念 分类 CANCAN FD高速CAN低俗容错CA…

更新至2021年,互联网相关指标数据

更新至2021年,互联网相关指标数据 1、来源:国家统计J和各省NJ 2、指标:域名数、网站数、网页数、互联网宽带接入端口、互联网宽带接入用户、城市宽带接入用户、移动互联网用户、移动互联网接入流量、联网上网人数 3、范围:31省…

git vscode

01:工作区 **02:暂存区 git add . 3:本地库 git commit -m ’ 4:远程库 git push example 点击箭头之后

【小黑送书—第二期】>>《用户画像:平台构建与业务实践》

在大数据时代,如何有效地挖掘数据价值并通过画像数据进行呈现,如何基于画像数据构建平台功能并提高业务产出,是值得各类公司和业务人员思考并付诸实践的事情。 通过画像释放大数据价值。大数据时代不缺少数据,而是缺乏挖掘数据价值…

Al中秋节由来

文章目录 简介中秋节的庆祝活动有哪些?有没有其他与中秋节相关的传说或故事? 今天的话题是,扯犊子 简介 中秋节是中国传统的重要节日之一,通常在农历八月十五这一天庆祝。中秋节的由来有多种传说和故事。 其中最有名的传说是关于…

基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

如何将内网ip映射到外网?快解析内网穿透

关于内网ip映射到外网的问题,就是网络地址转换,私网借公网。要实现这个,看起来说得不错,实际上是有前提条件的。要实现内网ip映射到外网,首先要有一个固定的公网IP,可以从运营商那里得到。当你得到公网IP后…

Linux 共享内存

#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg);功能&#xff1a;创建一个新的内存段或者获得一个既有的共享内存段的标识。新创建的内存段中的数据都会被初始化为0参数&#xff1a;-key&#xff1a;key_t类型是一个整…

恒合仓库 - 仓库管理系统搭建

仓库管理系统搭建 文章目录 仓库管理系统搭建一、项目介绍1.1 项目描述1.2 技术选型1.3 模块划分 二、搭建前端环境三、搭建后端环境3.1 创建springboot项目 - 划分包层次3.2 导入依赖3.3 启动类配置3.4.配置文件配置 一、项目介绍 1.1 项目描述 项目搭球为满足日益扩大的仓库…

Linux提权辅助工具Linux Exploit Suggester

Linux提权辅助工具Linux Exploit Suggester 1.概述2.工具使用3.已经有人二开了 1.概述 Linux Exploit Suggester是一款根据操作系统版本号自动查找相应提权脚本的工具 Linux Exploit Suggester的官方下载地址为https://github.com/PenturaLabs/Linux_Exploit_Suggester 2.工具…

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01 前言 在计算机安全领域&#xff0c;漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天&#xff0c;我们将深入探讨一个异常危险的漏洞&#xff0c;它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中&#xff0c;"exit&qu…

典型数据结构-栈/队列/链表、哈希查找、二叉树(BT)、线索二叉树、二叉排序树(BST树)、平衡二叉树(AVL树)、红黑树(RB树)

目录 典型数据结构列举 栈/队列/链表 树 二叉树 线索二叉树 二叉排序树 平衡二叉树&#xff08;AVL树&#xff09; 红黑树 其它树种和应用介绍 典型数据结构列举 栈/队列/链表 描述略。 一些基本的简单实现参考/数据结构简单实现/文件夹里面。 线性表详解&#xff…

淘宝天猫商品评论接口

宝商品评论数据接口可以获取到商品评论信息&#xff0c;但是无法直接提供淘宝商品评论数据接口的链接。 不过&#xff0c;可以通过淘宝开放平台获取到商品评论信息。具体方法是&#xff0c;先在淘宝开放平台注册并创建应用&#xff0c;然后使用该应用的 App Key 和 App Secret…

数据结构——排序算法——归并排序

将两个有序数组合并为一个有序数组 在第二个列表向第一个列表逐个插入的过程中&#xff0c;由于第二个列表已经有序&#xff0c;所以后续插入的元素一定不会在前面插入的元素之前。在逐个插入的过程中&#xff0c;每次插入时&#xff0c;只需要从上次插入的位置开始&#xff0…

堆排序(堆的构造及代码实现)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…