IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【Spark】04 Spark运行架构 -> 正文阅读

[大数据]【Spark】04 Spark运行架构

Spark运行架构

  • Spark框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构
    在这里插入图片描述
    图形中的Driver表示master,负责管理整个集群中的作业任务调度。
    图形中的Executor 则是 slave,负责实际执行任务。

核心组件

由上图可以看出,对于Spark框架有两个核心组件:

1. Driver

  • Driver就是驱动器节点,用于执行Spark任务中的main方法,触发整个任务执行。
  • Driver在Spark作业执行时主要负责:
    a) 将用户程序转化为作业(job)
    b) 在Executor之间调度任务(task)
    c) 跟踪Executor的执行情况
    d) 通过UI展示查询运行情况

2. Executor

  • Executor是集群中工作节点(Worker)中的一个JVM进程

  • 负责在 Spark 作业中执行具体任务(Task),任务彼此之间相互独立。

  • Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。

  • 如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,Driver会将任务调度到其他Executor节点上继续运行。

  • Executor有两个核心功能:
    a) 负责运行组成Spark应用的任务,并将结果返回给Driver端
    b) 自身的块管理器(Block Manager)可以为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

3. Master & Worker

  • Master和Worker是standalone模式下的核心组件
  • Master是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责,类似于Yarn环境中的RM
  • Worker呢,也是进程,一个Worker运行在集群中的一台服务器上,由Master分配资源对数据进行并行的处理和计算,类似于Yarn环境中NM。

4. ApplicationMaster

  • Driver和Executor是计算相关组件
  • Master和worker是资源相关组件
  • 计算和资源想要交互,如果直接交互,Driver和Master直接交互,耦合度高,为了解耦,在中间加了ApplicationMaster,当Driver需要资源来做计算,委托AM向worker申请资源

核心概念

Executor与Core

  • Spark Executor是集群中运行在工作节点(Worker)中的一个JVM进程
  • 在提交应用中,可以提供参数指定Executor的个数,以及对应的内存和CPU core数量
    在这里插入图片描述
    注意:如果core个数超过了机器的core个数,那么其底层就是并发执行,并非并行执行;

2.并行度(Parallelism)

  • 整个集群并行执行的任务数量称之为并行度;
  • 并行执行指的是任务由不同的CPU执行。任务分布在不同的节点,即便每个机器是单线程,这也保证了多任务可以并行执行。

3. 有向无环图(DAG)

将Spark程序直接映射成的数据流的高级抽象模型。简单理解就是将整个程序计算的执行过程用图形表示出来,这样更直观,更便于理解,可以用于表示程序的拓扑结构。
在这里插入图片描述
箭头的方向是依赖方向,A->B,A依赖B,构成拓扑图形,但是不能闭环。
以Maven中依赖为例,A项目依赖于B项目,意味着A项目需要用Maven仓库中B项目的jar包,A要运行必须等B打包完。如果闭环,就永远无法执行
同样的道理也适用于Spark中任务的执行,DAG的作用是体现任务的调度顺序。

  • 初代计算引擎:Hadoop所承载的MapReduce,它将计算分为两个阶段,分别为 Map阶段 和 Reduce阶段。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。 由于这样的弊端,催生了支持 DAG 框架的产生。
  • 支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie 来说,大多还是批处理的任务。
  • 接下来就是以 Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及实时计算。

4. 提交流程

在这里插入图片描述
(1)两条主线,资源申请和计算准备
(2)Spark应用程序提交到Yarn环境中执行的时候,一般会有两种部署执行的方式:Client和Cluster。
两种模式主要区别在于:Driver程序的运行节点位置。
基本原则:Driver运行在集群里面,就是Cluster,运行在集群外就是Client模式

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:41:33  更:2021-11-19 17:41:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:22:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码