当前位置: 首页 > article >正文

Spark大数据处理讲课笔记2.3 Spark运行架构与原理

文章目录

  • 零、本讲学习目标
  • 一、基本概念
    • (一)Executor(执行器)
    • (二)Task(任务)
    • (三)Job(作业)
    • (四)Stage(阶段)
  • 二、Spark集群运行架构
  • 三、Spark运行基本流程
    • 步骤1、注册并申请资源
    • 步骤2、分配资源
    • 步骤3、资源反馈
    • 步骤4、Executor发现注册
    • 步骤5、提交Task
    • 步骤6、注销

零、本讲学习目标

  1. 了解Spark集群运行架构
  2. 了解Spark运行基本流程

一、基本概念

(一)Executor(执行器)

  • 在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据。

(二)Task(任务)

  • 运行main()方法并创建SparkContext的进程。

(三)Job(作业)

  • 一个并行计算作业,由一组任务组成,并由Spark的行动算子(如:save、collect)触发启动。

(四)Stage(阶段)

  • 每个Job可划分为更小的Task集合,每组任务被称为Stage。

二、Spark集群运行架构

  • Spark运行架构主要由SparkContextCluster ManagerWorker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,通过下图深入了解Spark运行基本流程。
    在这里插入图片描述
  • Spark有多种运行模式,可以运行在一台机器上,称为本地(单机)模式,也可以以YARN或Mesos作为底层资源调度系统以分布式的方式在集群中运行,称为Spark On YARN模式,还可以使用Spark自带的资源调度系统,称为Spark Standalone模式。
  • 本地模式通过多线程模拟分布式计算,通常用于对应用程序的简单测试。本地模式在提交应用程序后,将会在本地生成一个名为SparkSubmit的进程,该进程既负责程序的提交,又负责任务的分配、执行和监控等。

三、Spark运行基本流程

  • Spark应用在集群上作为独立的进程组来运行,具体运行流程如下图所示
    在这里插入图片描述

步骤1、注册并申请资源

  • 当一个Spark应用被提交时,根据提交参数创建Driver进程,Driver进程初始化SparkContext对象,由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。

步骤2、分配资源

  • Driver进程向Cluster Manager申请资源,Cluster Manager接收到Application的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点上,通知Worker为应用启动多个Executor。

步骤3、资源反馈

  • Executor创建后,会向Cluster Manager进行资源及状态的反馈,便于Cluster Manager对Executor进行状态监控,如果监控到Executor失败,则会立刻重新创建。

步骤4、Executor发现注册

  • Executor会向SparkContext反向注册申请Task。

步骤5、提交Task

  • Task Scheduler将Task发送给Worker进程中的Executor运行并提供应用程序代码。

步骤6、注销

  • 当程序执行完毕后写入数据,Driver向Cluster Manager注销申请的资源。

http://www.kler.cn/a/4449.html

相关文章:

  • 【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍
  • 低代码独特架构带来的编译难点及多线程解决方案
  • vue3 uiapp实现一个数字输入组件, 舒服非数字会默认转成最小数
  • 抢十八游戏
  • Golang 设计模式
  • dockerfile2.0
  • Android的虚拟机垃圾回收解析,简单明了看完通透
  • Jython
  • 1652_MIT 6.828 shell例程重定向的实现分析
  • mysql隐式转换 “undefined“字符串匹配到mysql int类型0值字段
  • MySQL——锁
  • K8s CrashLoopBackOff 如何排障?
  • 如何注册Shopify商店
  • 汇编语言(1)——寄存器
  • 编写python的smtplib库发送邮件代码(简洁-原创)
  • js中generator详解
  • C++之引用
  • 类ChatGPT平台推荐【国内访问ChatGPT4】
  • eNSP 本地AAA配置实验
  • <class ‘sensor_msgs.msg._Image.Image‘>原理
  • Apache iotdb-web-workbench 认证绕过漏洞 CVE-2023-24829
  • Exception 和 Error
  • Pytorch梯度下降——up主:刘二大人《PyTorch深度学习实践》
  • 【HTB】Responder思路——Responder抓取ntlmhash、远程文件包含、远程代码执行、evil-winrm连接
  • 文件操作练习
  • Python中关于字典和Counter()的两点区别