四, Spark运行架构

这篇具有很好参考价值的文章主要介绍了四, Spark运行架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

四, Spark 运行架构

4.1 整体架构

  • Spark框架的核心是一个计算引擎, 整体来说, 它采用了主-从master-slave的结构
  • 下图是Spark执行时的基本结构,
    • Driver表示master: 负责管理整个集群中的作业任务调度
    • Executor是slave: 负责实际执行任务

四, Spark运行架构


  • Spark Apllication的运行架构由两部分组成: Driver program(SparkContext)Excutor, Spark Application一般都是在集群中运行, 比如Spark Standalone, YARN, Mesos, 这个集群模式给Spark Application 提供了计算资源, 并对这些资源进行管理, 这些资源既可以给executor运行, 也可以给Driver Progam运行.
  • 根据Spark Allication的Driver program是否在资源集群中运行, Spark Application的运行方式又可以分为Cluster模式Client模式;

有必要掌握的基本术语:

四, Spark运行架构

术语 解释
Application 类似于MR中的概念, 指的是用户编写的Spark应用程序, 内含有一个Driver功能的代码和分布在集群中多个节点上运行的Excutor代码
Driver Program 运行Application 的main()函数并且创建SparkContext, 通常用SparkContext代表Driver Program; 其中创建SparkContext的目的是为了准备Spark应用程序的运行环境; 在Spark中由SparkContext负责和ClusterManager通信, 进行资源的申请, 任务的分配和监控; 当Excutor部分运行完毕后, Driver负责将SparkContext关闭.
Excutor 为某个Application运行在Worker节点上的一个进程, Excutor进程负责运行Task, 并且负责将数据存在内存或者磁盘上; 每个Application都有各自独立的excutors
Cluster Manager 指的是在集群上获取资源的外部服务,目前有: Ø Standalone:Spark原生的资源管理,由Master负责资源的分配;Ø Hadoop Yarn:由YARN中的ResourceManager负责资源的分配;
Worker NOde 集群中任何可运行Application代码的节点, 在Standalone模式中指的就是通过Slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点
Job 包含多个Task组成的并行计算, 往往由Spark Action催生, 一个Job包含多个RDD及作用在相应RDD上的各种Operation;
Stage 每个Job会被拆分为很多组Task, 每一组任务叫Stage, 或者叫TaskSet
Task 被送到某个Excutor上的工作任务
RDD Spark的基本计算单元, 可以通过一系列算子进行操作(主要有Trasformation和 Action操作)
DAG Scheduler 根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler
Task Scheduler 将Taskset提交给worker(集群)运行并回报结果

4.2 核心组件

4.2.1 Driver && Excutor 计算组件

Driver: 运行Spark Application的main()函数, 并创建SparkContext

Driver 功能
1. 将用户程序(Spark Application)转化为作业(job)
2. 在 Excutor 之间调度任务(task)
3. 跟踪Excutor 的执行情况
4. 通过UI 展示查询运行情况

Excutor: Worker Node中的一个JVM进程, 用来执行分配给该节点的Task,任务彼此之间相互独立;
Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。

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

4.2.2 Master && Worker 资源(只存在于StandAlone中)

Spark集群的独立部署环境(StandAlone)中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能,所以环境中还有其他两个核心组件:Master和Worker

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

4.2.3 ApplicationMaster (AM) 计算-> AM -> 资源

Hadoop用户向YARN集群提交应用程序时,提交程序中应该包含ApplicationMaster,用于向资源调度器申请执行任务的资源容器Container,运行用户自己的程序任务job,监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况。

  • 说的简单点就是,ResourceManager(资源)和Driver(计算)之间的解耦合靠的就是ApplicationMaster。

4.3 核心概念

4.3.1 Excutor与Core (核)

四, Spark运行架构

4.3.2 并行度(Parallelism)

  • 在分布式计算框架中一般都是多个任务同时进行,由于任务分布在不同的计算结点进行计算, 所有能够真正的实现多任务并行执行, 记住, 这里是并行, 而不是并发.
  • 这里我们将整个集群并行执行任务的数量称之为并行度, 一个作业的并行度是多少取决于框架的默认配置, 应用程序也可以在运行过程中动态修改;

并行: 同一时刻(某个时间点), 一起执行(parallelism)
并发: 某个时间段, 交替快速执行(Concurrence)

4.3.3 有向无环图(DAG)

四, Spark运行架构
四, Spark运行架构

4.4 Spark提交流程

  • 所谓的提交流程, 其实就是开发人员根据需求写的应用程序通过Spark客户端提交给Spark运行环境执行计算的流程
  • Spark运行架构参见下面示意图:
  1. 构建Spark Application的运行环境(启动SparkContext)
  2. SparkContext向资源管理器(可以是Standalone、Mesos、Yarn)申请运行>3. Executor资源,并启动StandaloneExecutorBackend,executor向 SparkContext申请Task。
  3. SparkContext将应用程序代码发放给executor
  4. SparkContext构建成DAG图、将DAG图分解成Stage、将Taskset发送给Task Scheduler、最后由Task Scheduler将Task发放给Executor运行。
  5. Task在Executor上运行,运行完毕释放所有资源。

四, Spark运行架构文章来源地址https://www.toymoban.com/news/detail-406613.html

4.4.1 Spark on Standalone运行过程(client模式) (阅读源码后补充)

4.4.2 Spark on YARN 运行过程(cluster模式) (阅读源码后补充)

  • 参考文章: Spark1.0.0 运行架构基本概念

到了这里,关于四, Spark运行架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.3 Spark运行架构与原理

    一、基本概念 (一)Executor(执行器) 在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据。 (二)Task(任务) 运行main()方法并创建SparkContext的进程。 (三)Job(作业) 一个并行计算作业,由一组任务组成,并由Spark的行动算

    2024年02月09日
    浏览(42)
  • 云原生架构设计与实现:Spark 在 K8s 上运行的基本原理

    在 Kubernetes(K8s)中,Pod 是最小的可调度单元。当 Spark 任务运行在 K8s 上时,无论是 Driver 还是 Executor 都由一个单独的 Pod 来表示。每个 Pod 都被分配了一个唯一的 IP 地址,并且可以包含一个或多个容器(Container)。Driver 和 Executor 的 JVM 进程都是在这些 Container 中启动、运行

    2024年01月19日
    浏览(47)
  • 初探Redis整体架构

    这种问法其实并不严谨,为啥这么说呢? Redis几个里程碑式的重要版本 理清一个事实,我们通常所说的单线程究竟为何意? Redis是单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket读)、解析、执行、内容返回(socket 写

    2023年04月09日
    浏览(32)
  • SpringCloud整体架构概述

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。 SpringCloud是在SpringBoot的基础上构建的,使开发者可以轻松入门并快速提高工作效率 SpringCloud为开发人员提供

    2024年02月14日
    浏览(42)
  • 支付整体架构

    架构即未来,只有建立在技术架构设计良好的体系上,支付机构才能有美好的未来。如果支付的技术体系在架构上存在问题,那么就没有办法实现高可用性、高安全性、高效率和水平可扩展性。 总结多年来在海内外支付机构主持和参与过的技术架构设计经验,发现基于参考架

    2024年02月13日
    浏览(36)
  • 云计算整体架构

    一、目的: 通过对相关书籍的目录进行学习,熟悉云计算整体的结构/整体/目录。 二、依据: 根据“理性作者假设”,文章具有结构清晰、论证完整、语言准确三个要点,其中,结构清晰就指的是书本目录的划分,通过对目录的学习,可以进一步了解整本书的结构,有个清

    2024年02月05日
    浏览(32)
  • Kubernetes 整体架构介绍

    Kubernetes 主要由以下几个核心组件组成: etcd 保存了整个集群的状态; kube-apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制; kube-controller-manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; kube-scheduler 负责资源的调

    2024年02月14日
    浏览(36)
  • 【Unity 脚本】整体架构图

    玩过WEBGL的可以看到上面图中Texture、Mesh、Material、Shader这些和THREE中这些抽象概念比较类似了 还有MeshRenderer用于显示3D对象/模型,还有SpriteRenderer用于显示像精灵这样的 2D 图像,MeshRenderer有个 Material类型 属性 material 有个 mesh 属性,就是 Mesh类型 1.架构图 2.架构图2 3.架构图3

    2024年02月16日
    浏览(47)
  • mysql的整体架构

    服务层-引擎层-硬盘层 一条语句执行的整体过程: 先建立连接(mysql -h -p 密码)–预处理-词法分析-语法分析-优化器选择用什么索引表如何连接等-执行器 到这里都是属于server层,大多数功能包括视图,存储过程,触发器都是这里实现的(索引不是) 接下来执行器就会调用引

    2024年02月14日
    浏览(37)
  • linux内核整体架构

    操作系统属于软件范畴,负责管理系统的硬件资源。OS具备的功能:1.为应用程序提供执行环境。2.为多用户和应用程序管理计算机的硬件资源。3.虚拟化功能。4.支持并发。 宏内核:所有的内核代码都编译成二进制文件并运行在一个大内核地址空间中,整体架构如下: 微内核:

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包