Spark系列之Spark体系架构

news2024/12/26 13:05:18

title: Spark系列


第四章 Spark体系架构

4.1 Spark核心功能

在这里插入图片描述

Alluxio  原来叫   tachyon    分布式内存文件系统

Spark Core提供Spark最基础的最核心的功能,主要包括:

1、SparkContext

通常而言,DriverApplication的执行与输出都是通过SparkContext来完成的,在正式提交Application之前,首先需要初始化SparkContext。

SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、Web服务等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。

SparkContext内置的DAGScheduler负责创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等功能。
Spark的应用程序的编写方式: 是一种链式调用
DAGScheduler的角色是针对调用链执行划分,划分的标准是Shuffle

SparkContext内置的TaskScheduler负责资源的申请、任务的提交及请求集群对任务的调度等工作。
TaskScheduler就是帮stage然后变成了taskset

2、存储体系

Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘I/O,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景。

小总结:如果一个Spark应用程序中的各个stage的数据,全部下放到磁盘,就其实和MapReduce区别不大了。

此外,Spark还提供了以内存为中心的高容错的分布式文件系统Tachyon(现在改名为Alluxio)供用户进行选择。Tachyon能够为Spark提供可靠的内存级的文件共享服务。

3、计算引擎

计算引擎由SparkContext中的DAGScheduler、RDD以及具体节点上的Executor负责执行的Map和Reduce任务组成。

DAGScheduler和RDD虽然位于SparkContext内部,但是在任务正式提交与执行之前将Job中的RDD组织成有向无环图(简称DAG)、并对Stage进行划分决定了任务执行阶段任务的数量、迭代计算、shuffle等过程。

4、部署模式

由于单节点不足以提供足够的存储及计算能力,所以作为大数据处理的Spark在SparkContext的TaskScheduler组件中提供了对Standalone部署模式的实现和YARN、Mesos等分布式资源管理系统的支持。

通过使用Local、Standalone、YARN、Mesos、kubernetes、Cloud等部署模式为Task分配计算资源,提高任务的并发执行效率。除了可用于实际生产环境的Standalone、YARN、Mesos、kubernetes、Cloud等部署模式外,Spark还提供了Local模式和local-cluster模式便于开发和调试。

4.2 Spark应用模块

Spark的底层提供了一个基于内存/磁盘的批处理计算引擎。spark基于这个引擎,提供了很多高级的应用模块。解决了不同场景中的业务需求。

为了扩大应用范围,Spark陆续增加了一些扩展功能,主要包括:

1、Spark SQL

spark sql 相对于 spark core 就类似于 Hive 相对于 MapReduce。
由于SQL具有普及率高、学习成本低等特点,为了扩大Spark的应用面,因此增加了对SQL及Hive的支持。Spark SQL的过程可以总结为:首先使用SQL语句解析器(SqlParser)将SQL转换为语法树(Tree),并且使用规则执行器(RuleExecutor)将一系列规则(Rule)应用到语法树,最终生成物理执行计划并执行的过程。其中,规则包括语法分析器(Analyzer)和优化器(Optimizer)。Hive的执行过程与SQL类似。

spark sql相对于spark core 就类似于Hive相对于mapreduce , 用来处理结构化数据。

2、Spark Streaming

Spark Streaming与Apache Storm类似,也用于流式计算。
	
Spark Streaming支持Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和简单的TCP套接字等多种数据输入源。输入流接收器(Receiver)负责接入数据,是接入数据流的接口规范。

Dstream是Spark Streaming中所有数据流的抽象,Dstream可以被组织为StreamGraph。Dstream本质上由一系列连续的RDD组成。

3、Spark GraphX

Spark提供的分布式图计算框架。GraphX主要遵循整体同步并行计算模式(BulkSynchronous Parallell,简称BSP)下的Pregel模型实现。

GraphX提供了对图的抽象Graph,Graph由顶点(Vertex)、边(Edge)及继承了Edge的EdgeTriplet(添加了srcAttr和dstAttr用来保存源顶点和目的顶点的属性)三种结构组成。

GraphX目前已经封装了最短路径、网页排名、连接组件、三角关系统计等算法的实现,用户可以选择使用。

4、Spark MLlib

Spark提供的机器学习框架。机器学习是一门涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多领域的交叉学科。MLlib目前已经提供了基础统计、分类、回归、决策树、随机森林、朴素贝叶斯、保序回归、协同过滤、聚类、维数缩减、特征提取与转型、频繁模式挖掘、预言模型标记语言、管道等多种数理统计、概率论、数据挖掘方面的数学算法。

4.3 Spark基本架构

Spark的架构分为两个方面:

集群的架构:  master    worker    主从架构    JVM进程
应用程序架构:driver    executor       JVM进程

应用程序由一个driver和n多个executor组成
在standalone集群模式中,其实master就是cluster Manager
executor:任务执行进程
任务进程会初始化一个线程池
线程池中的每个线程会运行一个 task

从应用程序运行的角度来看,Spark集群由以下部分组成

集群模式链接: http://spark.apache.org/docs/latest/cluster-overview.html

在这里插入图片描述

Cluster Manager

Spark的集群管理器,主要负责资源的分配与管理。集群管理器分配的资源属于一级分配,它将各个Worker上的内存、CPU等资源分配给应用程序,但是并不负责对Executor的资源分配。目前,Standalone、YARN、Mesos、K8S,EC2等都可以作为Spark的集群管理器。

Master

Spark集群的主节点。负责管理整个集群

Worker

Spark集群的工作节点。对Spark应用程序来说,由集群管理器分配得到资源的Worker节点主要负责以下工作:
创建Executor,将资源和任务进一步分配给Executor,同步资源信息给Cluster Manager。

Executor

执行计算任务的一些进程。主要负责任务的执行以及与Worker、Driver Application的信息同步。

Driver Appication

客户端驱动程序,也可以理解为客户端应用程序,用于将任务程序转换为RDD和DAG,并与Cluster Manager进行通信与调度。

这些组成部分之间的整体关系如下图所示:

在这里插入图片描述

Spark计算平台有两个重要角色,Driver和executor,不论是StandAlone模式还是YARN模式,都是Driver充当Application的master角色,负责任务执行计划生成和任务分发及调度;executor充当worker角色,负责实际执行任务的task,计算的结果返回Driver。

在这里插入图片描述

4.4 Spark核心概念

TermMeaning
ApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.
Application jarA jar containing the user’s Spark application. In some cases users will want to create an “uber jar” containing their application along with its dependencies. The user’s jar should never include Hadoop or Spark libraries, however, these will be added at runtime.
Driver programThe process running the main() function of the application and creating the SparkContext
Cluster managerAn external service for acquiring resources on the cluster (e.g. standalone manager, Mesos, YARN, Kubernetes)
Deploy modeDistinguishes where the driver process runs. In “cluster” mode, the framework launches the driver inside of the cluster. In “client” mode, the submitter launches the driver outside of the cluster.
Worker nodeAny node that can run application code in the cluster
ExecutorA process launched for an application on a worker node, that runs tasks and keeps data in memory or disk storage across them. Each application has its own executors.
TaskA unit of work that will be sent to one executor
JobA parallel computation consisting of multiple tasks that gets spawned in response to a Spark action (e.g. save, collect); you’ll see this term used in the driver’s logs.
StageEach job gets divided into smaller sets of tasks called stages that depend on each other (similar to the map and reduce stages in MapReduce); you’ll see this term used in the driver’s logs.

在这里插入图片描述

Spark中的核心概念文字描述:

1、Application:表示你的应用程序,包含一个Driver Program和若干Executor

2、Driver Program:Spark中的Driver即运行上述Application的main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等。程序执行完毕后关闭SparkContext

3、ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。

4、SparkContext:整个应用的上下文,控制应用程序的生命周期,负责调度各个运算资源,协调各个Worker上的Executor。初始化的时候,会初始化DAGScheduler和TaskScheduler两个核心组件。

5、RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。

6、DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler,其划分Stage的依据是RDD之间的依赖关系:宽依赖,也叫shuffle依赖

7、TaskScheduler:将TaskSet提交给Worker(集群)运行,每个Executor运行什么Task就是在此处分配的。

8、Worker:集群中可以运行Application代码的节点。在Standalone模式中指的是通过worker文件配置的worker节点,在Spark on Yarn模式中指的就是NodeManager节点。

9、Executor:某个Application运行在Worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 CoarseGrainedExecutorBackend,一个CoarseGrainedExecutorBackend进程有且仅有一个executor对象,它负责将Task包装成taskRunner,并从线程池中抽取出一个空闲线程运行Task,这样,每个CoarseGrainedExecutorBackend能并行运行Task的数据就取决于分配给它的CPU的个数。

10、Stage:每个Job会被拆分很多组Task,每组作为一个TaskSet,其名称为Stage

11、Job:包含多个Task组成的并行计算,是由Action行为触发的

12、Task:在Executor进程中执行任务的工作单元,多个Task组成一个Stage

13、SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。
	MapOutPutTracker:负责Shuffle元信息的存储。
	BroadcastManager:负责广播变量的控制与元信息的存储。
	BlockManager:负责存储管理、创建和查找块。
	MetricsSystem:监控运行时性能指标信息。
	SparkConf:负责存储配置信息

4.5 编程模型

Spark 应用程序的编程流程:
1、初始化创建一个sparkContext编程入口
2、通过编程入口sparkContext加载数据源获取数据抽象对象(RDD)
3、针对这个RDD链式调用各种算子执行各种逻辑操作得到一个结果RDD
4、针对执行结果RDD执行落盘操作
5、提交Job任务运行。

Spark应用程序从编写到提交、执行、输出的整个过程如下图所示:

在这里插入图片描述

图中描述的步骤如下:

1、用户使用SparkContext提供的API(常用的有textFile、sequenceFile、runJob、stop等)编写Driver Application程序。此外SQLContext、HiveContext及StreamingContext对SparkContext进行封装,并提供了SQL、Hive及流式计算相关的API。

2、使用SparkContext提交的用户应用程序,首先会使用BlockManager和BroadcastManager将任务的Hadoop配置进行广播。然后由DAGScheduler将任务转换为RDD并组织成DAG,DAG还将被划分为不同的Stage。最后由TaskScheduler借助ActorSystem将任务提交给集群管理器(ClusterManager)。

3、集群管理器(ClusterManager)给任务分配资源,即将具体任务分配到Worker上,Worker创建Executor来处理任务的运行。Standalone、YARN、Mesos、kubernetes、EC2等都可以作为Spark的集群管理器。

计算模型:

在这里插入图片描述

​ RDD可以看做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程,如上图。RDD的迭代计算过程非常类似于管道。分区数量取决于partition数量的设定,每个分区的数据只会在一个Task中计算。所有分区可以在多个机器节点的Executor上并行执行。



声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

微博地址: http://weibo.com/luoyepiaoxue2014 点击打开链接

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

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

相关文章

STM32G491RCT6,STM32H743BIT6规格书 32bit IC MCU

STM32G4系列将强大的ArmCortex-M4加上FPU和DSP能力与丰富和先进的模拟外设相结合。它引入了两种新的数学加速器(Cordic和Filtering), CAN-FD (Flexible Datarate),USB Type-C接口的功率传输,包括物理层(PHY)和先进的安全功能。(图…

Day38——Dp专题

DP专题 动态规划五部曲: 确定dp数组以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 1.斐波那契数 题目链接:509. 斐波那契数 - 力扣(LeetCode) 思路:做dp类题目,根据…

Meta 内部都在用的 FX 工具大起底:利用 Graph Transformation 优化 PyTorch 模型

PyTorch 中的 graph mode 在性能方面表示更为出色,本文介绍 Torch.FX 这个强大工具,可以捕捉和优化 PyTorch 程序 graph。 一、简介 PyTorch 支持两种执行模式:eager mode 和 graph mode。 eager mode 中,模型中的运算符在读取时…

JUC并发编程

目录JUC概述什么是JUC进程与线程的概念线程的状态线程的方法并发与并行管程(Monitor)用户线程和守护线程Lock接口Synchronized 关键字Synchronized 作用范围Synchronized 实现卖票例子Lock接口什么是LockLock与synchronized的区别可重入锁(ReentrantLock&#xff09…

剑桥大学哪些专业需要IB物理成绩?

如果IB学生申请目标是剑桥大学,那么申请哪些专业需要学习IBDP物理课程?要不要学习IBDP物理课程呢?剑桥大学:IB成绩要求高,招录竞争激烈 在申请英国大学之前,理性的申请者都会提前查看一下目标大学的学术成绩…

Python破解WIFI源代码,测试成功(暴力跑字典)

目录 1,先安装Python环境(这个不用多说了吧) 2,安装PyWifi 3,自己手工整理高频弱口令,不建议程序生成的字典,生成的字典成功率实在太低。 4,自己生成字典的算法: 5,破解WIF代码第一种&#…

NetCore多租户开源项目,快速后台开发企业框架,赚钱就靠她了

今天给大家推荐一个开源项目,基于.NetCore开发的、多租户的企业开发框架。 文章目录项目简介技术架构项目结构系统功能代码生成器部分功能截图项目地址项目简介 这是一个基于.Net和Layui、基于多数据库的多租户,敏捷开发优选框架。系统自带权限功能、数…

面向移动支付过程中网络安全的研究与分析

基础防护系统设计 4.1.1入侵监测系统 入侵监测系统(IDS)的部署主要是防治外界非法人员对银行网络进行攻击,及时发现非法人员的入侵行为,以确保能够立刻采取网络阻止措施。在银行网络中的关键部位部署入侵检测系统,可…

springboot中controller层代码优雅写法

在基于spring框架的项目开发中,必然会遇到controller层,它可以很方便的对外提供数据接口服务,也是非常关键的出口,所以非常有必要进行规范统一,使其既简洁又优雅。 controller层的职责为负责接收和响应请求&#xff0c…

快手资讯|快手推出多档世界杯相关节目

1、快手直播间上线“相亲角”功能 近日,快手直播间上线了“相亲角”功能,可为主播打造相亲功能。 此外,快手还在“热门活动”中推出了“婚庆”频道,主要展示“婚礼现场”、“婚纱照”等短视频内容。企查查App显示,北京…

博主常用的 idea 插件,建议收藏!!!

一、Key Promoter X **快捷键提示工具:**每次操作,如果有快捷键,会提示用了什么快捷键。 二、Maven Helper maven 助手:展示 jar 包依赖关系 三、Lombok 只需加上注解 什么get set 什么toString 等等方法都不需要写 四、MyBati…

Postman下载安装注册登录简介登录后界面简介

一、为什么选择Postman? 如今,Postman的开发者已超过1000万(来自官网),选择使用Postman的原因如下:1、简单易用 - 要使用Postman,你只需登录自己的账户,只要在电脑上安装了Postman应用程序,就可以方便地随时随地访问…

小程序上新(2022.11.15~11.28)

20221115 小程序基础库 2.27.3 更新 更新 框架 设备 VoIP 能力授权更新 框架 支持 worker 代码打包到小程序&小游戏分包 详情更新 组件 scroll-view 接近全屏尺寸时默认开启点击回到顶部更新 API createVKSession 在不需要用到摄像头的时候不再发起摄像头授权 详情修复 框…

elasticsearch7.6.2和logstash安装和初步

一、linux安装 参考以下链接: Linux(centos7)如何部署ElasticSearch7.6.2单节点跟集群(es部署指南) 二、window安装 参考下文更加详细:windows ElasticSearch 7.6.0集群搭建 2.1 下载elasticsearch7.6.…

开源多商户商城源码代码分析

如今,互联网几乎普及到了所有地区,同时也推动了传统行业发展。目前,越来越多的线下商家开始搭建多商户商城系统,打造属于自己的淘宝、天猫电商服务平台。什么是多商户商城系统呢?想必大部分人并不是很了解,…

多线程基本概念

多线程多线程基本概念线程控制创建终止等待分离线程安全基本概念实现互斥互斥锁死锁同步线程应用生产者与消费者模型线程池单例模式多线程基本概念 线程是进程中一个执行流程,是 CPU 进行执行调度的基本单元; 进程是系统进行资源分配的基本单元。 Linu…

SpringBoot很熟?那手撕一下自定义启动器吧

一. 前言 哈喽,大家好,不知道你有没有想辉哥呢?我可是很想你们哟!最近金九银十,又有不少小伙伴私信辉哥,说自己在面试时被问到SpringBoot如何自定义启动器,结果自己不知道该怎么回答。那么今天…

maltose-BSA 麦芽糖-牛血清白蛋白 BSA-PEG-maltose,牛血清白蛋白-PEG-麦芽糖

maltose-BSA 麦芽糖-牛血清白蛋白 BSA-PEG-maltose,牛血清白蛋白-PEG-麦芽糖 中文名称:麦芽糖-牛血清白蛋白 英文名称:maltose-BSA 纯度:95% 别称:牛血清白蛋白修饰麦芽糖,BSA-麦芽糖 麦芽糖-聚乙二醇-牛血清白…

设计模式日常学习(七)

6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态…

什么是副业思维,副业应该怎么做,用创业思维分析副业的可行性

副业其实也算是创业的一种,他考量的不仅仅是自身的知识储备,还有你对市场的看法,再加上一定的做副业的技巧,下面分享七个做好副业的技巧​。 1.循序渐进投入 不要大量投资。首先,使用相对较轻的方法来验证创业理念是否…