Spark学习(二)---Spark运行架构和核心概念

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

1.Spark运行架构

Spark框架的核心是一个计算引擎,它采用了master-slave的结构。
Spark学习(二)---Spark运行架构和核心概念,spark,spark,学习,架构
图形中的 Driver 表示 master,
负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。

1.1 核心组件

由此可以得出,在Spark框架中有两个核心组件:

1.1.1 Driver

Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:
➢ 将用户程序转化为作业(job)
➢ 在 Executor 之间调度任务(task)
➢ 跟踪 Executor 的执行情况
➢ 通过 UI 展示查询运行情况

实际上,我们无法准确地描述 Driver 的定义,因为在整个的编程过程中没有看到任何有关Driver 的字眼。所以简单理解,所谓的 Driver 就是驱使整个应用运行起来的程序,也称之为Driver 类。

1.1.2 Executor

Spark Executor 是集群中工作节点(Worker)中的一个 JVM 进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他 Executor 节点上继续运行。
Executor 有两个核心功能:
➢ 负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程
➢ 它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储

RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

1.2 Master&&Worker

在Spark 集群的 独立部署环境(standalone) 中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能,以环境中还有其他两个核心组件:Spark 集群的独立部署环境中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能,所以环境中还有其他两个核心组件:Master 和 Worker,这里的Master 是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责,类似于 Yarn 环境中的 RM, 而Worker 呢,也是进程,一个 Worker 运行在集群中的一台服务器上,由 Master 分配资源对数据进行并行的处理和计算,类似于 Yarn 环境中 NM

1.3 ApplicationMaster

Hadoop用户向YARN集群提交应用程序时,提交程序中应当包含ApplicationMaster,用于向资源调度器申请执行任务的资源容器Container,运行用户自己的程序任务job,监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况。
Driver在向Master交互的时候,不应直接与Master进行交互,而是通过ApplicationMaster来与Master进行交互。

2.Spark的核心概念

2.1 Executor 与 Core

Spark Executor 是集群中运行在工作节点(Worker)中的一个 JVM 进程,**是整个集群中的专门用于计算的节点。**在提交应用中,可以提供参数指定计算节点的个数,以及对应的资源。这里的资源一般指的是工作节点 Executor 的内存大小和使用的虚拟 CPU 核(Core)数量。
Spark学习(二)---Spark运行架构和核心概念,spark,spark,学习,架构

2.2 并行度(Parallelism)

并发是多个任务抢占同一个资源,而对于并行来说,并行就是多个任务同时执行。
分布式计算框架中一般都是多个任务同时执行,由于任务分布在不同的计算节点进行计算,所以能够真正地实现多任务并行执行,记住,这里是并行,而不是并发。**这里我们将整个集群并行执行任务的数量称之为并行度。**那么一个作业到底并行度是多少呢?这个取决于框架的默认配置。应用程序也可以在运行过程中动态修改。

2.3 有向无环图(DAG)

Spark学习(二)---Spark运行架构和核心概念,spark,spark,学习,架构

大数据计算引擎框架我们根据使用方式的不同一般会分为四类,其中第一类就是Hadoop 所承载的 MapReduce,它将计算分为两个阶段,分别为 Map 阶段 和 Reduce 阶段。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。 由于这样的弊端,催生了支持 DAG 框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie 来说,大多还是批处理的任务。接下来就是以 Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及实时计算。这里所谓的有向无环图,并不是真正意义的图形,而是由 Spark 程序直接映射成的数据流的高级抽象模型。简单理解就是将整个程序计算的执行过程用图形表示出来,这样更直观,更便于理解,可以用于表示程序的拓扑结构。DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方
向,不会闭环。

2.4 提交流程

Spark在Yarn当中的提交流程:
Spark学习(二)---Spark运行架构和核心概念,spark,spark,学习,架构

所谓的提交流程,其实就是我们**开发人员根据需求写的应用程序通过 Spark 客户端提交给 Spark 运行环境执行计算的流程。**在不同的部署环境中,这个提交过程基本相同,但是又有细微的区别,我们这里不进行详细的比较,但是因为国内工作中,将 Spark 引用部署到Yarn 环境中会更多一些,所以本课程中的提交流程是基于 Yarn 环境的。Spark 应用程序提交到 Yarn 环境中执行的时候,一般会有两种部署执行的方式:Client和 Cluster。两种模式主要区别在于:Driver 程序的运行节点位置。

2.5 Yarn Client 模式

Client 模式将用于监控和调度的 Driver 模块在客户端执行,而不是在 Yarn 中,所以一般用于测试。
➢ Driver 在任务提交的本地机器上运行
➢ Driver 启动后会和 ResourceManager 通讯申请启动 ApplicationMaster
➢ ResourceManager 分配 container,在合适的 NodeManager 上启动 ApplicationMaster,负
责向 ResourceManager 申请 Executor 内存
➢ ResourceManager 接到 ApplicationMaster 的资源申请后会分配 container,然后
ApplicationMaster 在资源分配指定的 NodeManager 上启动 Executor 进程
➢ Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行
main 函数
➢ 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 stage,每个 stage 生
成对应的 TaskSet,之后将 task 分发到各个 Executor 上执行。

2.6 Yarn Cluster 模式

**Cluster 模式将用于监控和调度的 Driver 模块启动在 Yarn 集群资源中执行。**一般应用于实际生产环境。
➢ 在 YARN Cluster 模式下,任务提交后会和 ResourceManager 通讯申请启动
ApplicationMaster,
➢ 随后 ResourceManager 分配 container,在合适的 NodeManager 上启动 ApplicationMaster,
此时的 ApplicationMaster 就是 Driver。
➢ Driver 启动后向 ResourceManager 申请 Executor 内存,ResourceManager 接到
ApplicationMaster 的资源申请后会分配 container,然后在合适的 NodeManager 上启动
Executor 进程
➢ Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行
main 函数,
➢ 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 stage,每个 stage 生
成对应的 TaskSet,之后将 task 分发到各个 Executor 上执行。文章来源地址https://www.toymoban.com/news/detail-535537.html

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

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

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

相关文章

  • Spark运行架构

    Spark 是用于大规模数据处理的统一分析引擎。 可以对结构化、半结构化、非结构化等各种类型的数据数据结构进行自定义计算。 也支持Python、Java、Scala、R以及SQL语言去开发应用程序计算数据。 Spark借鉴了MapReduce思想发展而来,保留了其分布式并行计算得优点并改进了其明显

    2024年02月14日
    浏览(27)
  • 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址: 尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程、案例实操)】 尚硅谷大数据技术Spark教程-笔记03【SparkSQL(概述、核心编程、

    2023年04月21日
    浏览(38)
  • 2.3 Spark运行架构与原理

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

    2024年02月09日
    浏览(29)
  • Spark核心RDD详解(设计与运行原理,分区,创建,转换,行动与持久化)

    在实际应用中,存在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的

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

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

    2024年01月19日
    浏览(40)
  • 【Spark基础】Spark核心模块组成与功能概述

    Spark基于Spark Core开发了多种组件。开发人员可以基于这些组件,轻松完成多种不同场景的计算任务。   Spark Core是Spark的核心,各类核心组件都依赖于Spark Core。如下图所示,Spark Core核心组件包括基础设施、存储系统、调度系统、计算引擎四个部分。 Spark基础设施为其他组件提

    2024年02月08日
    浏览(42)
  • 【大数据开发 Spark】第一篇:Spark 简介、Spark 的核心组成(5大模块)、Spark 的主要特征(4大特征)、Spark 对比 MapReduce

    初步了解一项技术,最好的方式就是去它的官网首页,一般首页都会有十分官方且准确的介绍,学习 Spark 也不例外, 官方介绍:Apache Spark ™是一种多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。 我们可以得知,Spark 可以单节点运行,也可以搭

    2024年02月05日
    浏览(34)
  • Spark 核心API

    spark core API 指的是 spark 预定义好的算子。无论是 spark streaming 或者 Spark SQL 都是基于这些最基础的 API 构建起来的。理解这些核心 API 也是写出高效 Spark 代码的基础。 Transformation 转化类的算子是最多的,学会使用这些算子就应付多数的数据加工需求了。他们有啥呢?可以如下

    2024年03月20日
    浏览(25)
  • Spark核心--RDD介绍

    rdd  弹性分布式数据集  是spark框架自己封装的数据类型,用来管理内存数据 数据集: rdd数据的格式  类似Python中 []     。 hive中的 该结构[] 叫 数组 rdd提供算子(方法)  方便开发人员进行调用计算数据 在pysaprk中本质是定义一个rdd类型用来管理和计算内存数据 分布式 : r

    2024年01月16日
    浏览(31)
  • Spark(26):Spark通讯架构

    目录 0. 相关文章链接 1. Spark通信架构概述 2. Spark 通讯架构解析  Spark文章汇总  Spark 中通信框架的发展: Spark 早期版本中采用 Akka 作为内部通信部件。 Spark1.3 中引入 Netty 通信框架,为了解决 Shuffle 的大数据传输问题使用 Spark1.6 中 Akka 和 Netty 可以配置使用。 Netty 完全实现

    2024年02月16日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包