栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【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模式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号