Spark运行模式介绍

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

1. Local运行模式

1.1 基本运行情况介绍

本质:启动一个JVM Process进程(一个进程里面有多个线程),执行任务Task
Spark运行模式介绍

Local模式可以限制模拟Spark集群环境的线程数量, 即Local[N] 或 Local[*]

其中N代表可以使用N个线程,每个线程拥有一个cpu core。如果不指定N,
则默认是1个线程(该线程有1个core)。 通常Cpu有几个Core,就指定几个
线程,最大化利用计算能力。

如果是local[*],则代表 Run Spark locally with as many worker threads as
logical cores on your machine.按照Cpu最多的Cores设置线程数

1.2 角色划分

资源管理:

  • Master:Local进程本身
  • Worker:Local进程本身

任务执行:

  • Driver:Local进程本身
  • Executor:不存在,没有独立的Executor角色, 由Local进程(也就是Driver)内的线程提供计算能力

Driver也算一种特殊的Executor, 只不过多数时候, 我们将Executor当做纯Worker对待, 这样和Driver好区分(一类是管理 一类是工人)

注意: Local模式只能运行一个Spark程序, 如果执行多个Spark程序, 那就是由多个相互独立的Local进程在执行

1.3 Spark 任务提交与解释器对比

方式 bin/spark-submit bin/pyspark bin/spark-shell
功能 提交java/scala/python代码到spark环境中运行 提供一个python解释器环境用来以python代码执行spark程序 提供一个scala解释器环境用来以scala代码执行spark程序
特点 提交代码 解释器环境,写一行执行一行 解释器环境,写一行执行一行
使用场景 正式场合,正式提交spark程序运行 测试\学习 测试\学习

2. StandAlone运行模式

2.1 StandAlone介绍

Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。
Spark运行模式介绍
StandAlone 是完整的Spark运行环境,Master角色以Master进程存在, Worker角色以Worker进程存在Driver和Executor运行于Worker进程内, 由Worker提供资源供给它们运行

2.2 StandAlone架构

Spark运行模式介绍
StandAlone集群在进程上主要有3类进程:

  • 主节点Master进程: Master角色, 管理整个集群资源,并托管运行各个任务的Driver
  • 从节点Workers:Worker角色, 管理每个机器的资源,分配对应的资源来运行Executor(Task);每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数
  • 历史服务器HistoryServer(可选):Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看应用运行相关信息

**注意:**集群模式下程序是在集群上运行的,不要直接读取本地文件,应该读取hdfs上的
因为程序运行在集群上,具体在哪个节点上我们运行并不知道,其他节点可能并没有那个数据文件

2.3 Spark应用架构

Spark Application运行到集群上时,由两部分组成:Driver Program和Executors

Spark运行模式介绍
Driver Program

  • 相当于AppMaster,整个应用管理者,负责应用中所有Job的调度执行
  • 运行JVM Process,运行程序的MAIN函数,必须创建SparkContext上下文对象
  • 一个SparkApplication仅有一个;

Executors

  • 相当于一个线程池,运行JVM Process,其中有很多线程,每个线程运行一个Task任务,一个Task任务运行需要1 Core CPU,所有可以认为Executor中线程数就等于CPU Core核数;
  • 一个Spark Application可以有多个,可以设置个数和资源信息

应用执行流程:

  1. 用户程序创建 SparkContext 时,新创建的 SparkContext 实例会连接到 ClusterManager。 Cluster Manager 会根据用户提交时设置的 CPU 和内存等信息为本次提交分配计算资源,启动 Executor。
  2. Driver会将用户程序划分为不同的执行阶段Stage,每个执行阶段Stage由一组完全相同Task组成,这些Task分别作用于待处理数据的不同分区。在阶段划分完成和Task创建后, Driver会向Executor发送 Task
  3. Executor在接收到Task后,会下载Task的运行时依赖,在准备好Task的执行环境后,会开始执行Task,并且将Task的运行状态汇报给Driver
  4. Driver会根据收到的Task的运行状态来处理不同的状态更新。 Task分为两种:一种是Shuffle Map Task,它实现数据的重新洗牌,洗牌的结果保存到Executor 所在节点的文件系统中;另外一种是Result Task,它负责生成结果数据;
  5. Driver 会不断地调用Task,将Task发送到Executor执行,在所有的Task 都正确执行或者超过执行次数的限制仍然没有执行成
    功时停止;

Spark运行监控页面区别:

4040端口: 是一个运行的Application在运行的过程中临时绑定的端口,用以查看当前任务的状态.4040被占用会顺延到4041.4042等,4040是一个临时端口,当前程序运行完成后, 4040就会被注销

8080端口: 默认是StandAlone下, Master角色(进程)的WEB端口,用以查看当前Master(集群)的状态

18080端口: 默认是历史服务器的端口, 由于每个程序运行完成后,4040端口就被注销了. 在以后想回看某个程序的运行状态就可以通过历史服务器查看,历史服务器长期稳定运行,可供随时查看被记录的程序的运行过程.

Spark程序运行层次结构:

Spark运行模式介绍
在一个Spark Application中,包含多个Job,每个Job有多个Stage组成,每个Job执行按照DAG图进行的。其中每个Stage中包含多个Task任务,每个Task以线程Thread方式执行,需要1Core CPU。

Spark Application程序运行时的三个概念:Job、Stage、Task

  • Job:由多个 Task 的并行计算部分,一般 Spark 中的action 操作(如 save、collect,后面进一步说明),会生成一个 Job。
  • Stage:Job 的组成单位,一个 Job 会切分成多个 Stage,Stage 彼此之间相互依赖顺序执行,而每个 Stage 是多个 Task 的集合,类似 map 和 reduce stage。
  • Task:被分配到各个 Executor 的单位工作内容,它是Spark 中的最小执行单位,一般来说有多少个 Paritition(物理层面的概念,即分支可以理解为将数据划分成不同
    部分并行处理),就会有多少个 Task,每个 Task 只会处理单一分支上的数据。

2.4 StandAlone HA 运行原理

Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障(SPOF)的问题。

Spark提供了两种解决单点故障问题的方案:

  1. 基于文件系统的单点恢复(Single-Node Recovery with Local File System)–只能用于开发或测试环境

  2. 基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)–可以用于生产环境
    Spark运行模式介绍
    ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息,包括Worker, Driver和Application的信息都已经持久化到文件系统,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何的影响。

分布式进程是分布在多个服务器上的, 状态之间的同步需要协调,比如谁是master,谁
是worker,谁成了master后要通知worker等, 这些需要中心化协调器Zookeeper来进行状态统一协调

3. Spark on YARN

YARN是一个资源调度框架,负责对运行在内部的计算框架进行资源调度管理。作为典型的计算框架,Spark本身是可以直接运行在YARN中, 并接受YARN的调度的。在企业中,多数场景下,会将Spark运行到YARN集群中。

所以, 对于Spark On YARN, 无需部署Spark集群, 只要找一台服务器, 充当Spark的客户端, 即可提交任务到YARN集群中运行。

3.1 Spark on Yarn 本质

Spark运行模式介绍
和StandAlone运行模式对比,在Spark on Yarn架构下,Master角色由YARN的ResourceManager担任;Worker角色由YARN的NodeManager担任;Driver角色运行在YARN容器内 或 提交任务的客户端进程中;真正干活的Executor运行在YARN提供的容器内。

3.2 部署模式

Spark On YARN是有两种运行模式的,一种是Cluster模式,一种是Client模式。
这两种模式的区别就是Driver运行的位置。

  • Cluster模式:Driver运行在YARN容器内部, 和ApplicationMaster在同一个容器内
  • Client模式:Driver运行在客户端进程中, 比如Driver运行在spark-submit程序的进程中

Cluster模式:Driver运行在容器内部

Spark运行模式介绍
Client模式:Driver运行在客户端程序进程中

Spark运行模式介绍
两种部署模式区别:
Spark运行模式介绍
Client模式和Cluster模式最最本质的区别是:Driver程序运行在哪里

Client模式:学习测试时使用,生产不推荐

  1. Driver运行在Client上,和集群的通信成本高
  2. Driver输出结果会在客户端显示

Cluster模式:生产环境中使用该模式

  1. Driver程序在YARN集群中,和集群的通信成本低
  2. Driver输出结果不能在客户端显示
  3. 该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题,yarn会重启ApplicattionMaster(Driver)

3.3 两种部署模式运行流程

在YARN Client模式下,Driver在任务提交的本地机器上运行:
Spark运行模式介绍

  1. Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster
  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存
  3. ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程
  4. Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数
  5. 之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分Stage,每个Stage生成对应的TaskSet,之后将Task分发到各个Executor上执行

在YARN Cluster模式下,Driver运行在NodeManager Contanier中,此时Driver与AppMaster合为一体

Spark运行模式介绍文章来源地址https://www.toymoban.com/news/detail-426265.html

  1. 任务提交后会和ResourceManager通讯申请启动ApplicationMaster
  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver;
  3. Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动Executor进程
  4. Executor进程启动后会向Driver反向注册
  5. Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行

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

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

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

相关文章

  • Spark基础【五种运行模式】

    Spark作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为Yarn,不过逐渐容器式环境也慢慢流行起来。 容器式环境:发现集群规模不足够,会自动化生成所需要的环境,不需要多余集群机器时,也会自动删除 Spark运行环境 = Jav

    2024年02月01日
    浏览(21)
  • 深入理解 Spark(一)spark 运行模式简介与启动流程源码分析

    以 standalone-client 为例,运行过程如下: SparkContext 连接到 Master,向 Master 注册并申请资源(CPU Core 和 Memory); Master 根据 SparkContext 的资源申请要求和 Worker 心跳周期内报告的信息决定在哪个 Worker 上分配资源,然后在该 Worker 上获取资源,然后启动 StandaloneExecutorBackend; Stan

    2024年02月02日
    浏览(27)
  • Spark基本介绍

    目录 Spark是什么 一、Spark与MapReduce对比区别 二、Spark的发展 三、Spark的特点 四、Spark框架模块         Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎,是一个分布式计算框架。 Spark中新的数据结构RDD(弹性分布式数据集),使得大数据分析能够

    2024年02月05日
    浏览(23)
  • Spark On Yarn的两种运行模式

    Spark On YARN是有两种运行模式:Cluster模式、Client模式 Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内。 Client模式即:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中。 Client模式详细流程 YARN Client模式下,Driver在任务提交的本地机器上运

    2024年02月02日
    浏览(39)
  • PySpark-Spark SQL基本介绍

    目录 Spark SQL基本介绍 Spark SQL特点 Spark SQL与Hive的异同 Spark SQL的数据结构 Spark SQL的入门 创建SparkSession对象 DataFrame详解 DataFrame基本介绍  DataFrame的构建方式 RDD构建DataFrame  内部初始化数据得到DataFrame schema总结 读取外部文件得到DataFrame Text方式读取 CSV方式读取 JSON方式读取 概

    2024年01月16日
    浏览(44)
  • Spark on Yarn 部署模式运行常用参数和认证参数理解

    Spark支持以下三种部署模式 Client模式:在Client模式下,驱动程序运行在提交应用程序的客户端上。应用程序使用集群中的资源来执行任务。 这种模式适用于开发和调试应用程序,因为它允许开发人员与驱动程序交互并查看应用程序的输出。 Cluster模式:在Cluster模式下,驱动程

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

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

    2024年01月19日
    浏览(40)
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用。

    Apache Spark 是一个快速的开源大数据处理引擎,可以用于大数据处理、机器学习、图形计算等领域。它可以在多种计算环境中运行,包括独立模式、YARN、Mesos、Kubernetes等云计算平台。 Spark基于RDD(Resilient Distributed Datasets)模型,RDD是一个不可变的分布式对象集合,可通过并行

    2024年02月10日
    浏览(33)
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用

    Apache Spark是一种基于内存计算的大数据处理框架,它支持分布式计算,并且能够处理比传统处理框架更大量的数据。以下是Apache Spark的一些基本概念和在大数据分析中的应用: RDD (Resilient Distributed Dataset):RDD是Spark的核心概念,它是一个分布式的、不可变的数据集。RDD可以从

    2024年02月13日
    浏览(39)
  • Spark Local环境部署

    目录 1:规划: 1:想法:            2:  版本 2:spark配置文件部署 1:上传Spark安装包到/export下面 2:解压下载的Spark安装包并且改名 3:spark部署环境变量 1: /etc/profile环境 2:/root/.bashrc 4:测试   1:bin/pyspark       1:进入pyspark环境 2:代码测试     ​编辑 3:web页面访问

    2024年01月15日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包