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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1652_MIT 6.828 shell例程重定向的实现分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面完成了一个单独命令执行之后,想放弃这个简单shell的实现。后来想想多少还是有几分不甘心,还是耐着心思把这个做完吧! 这次&…

mysql隐式转换 “undefined“字符串匹配到mysql int类型0值字段

描述:mysql 用字符串搜索 能搜到int类型查询结果 mysql int类型条件用字符串查询 table: CREATE TABLE all_participate_records (id bigint unsigned NOT NULL AUTO_INCREMENT,created_at datetime(3) DEFAULT NULL,updated_at datetime(3) DEFAULT NULL,deleted…

MySQL——锁

MySQL锁的概述 锁是计算机协调多个进程或线程并发访问某- -资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、1/0)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并…

如何注册Shopify商店

Shopify Shopify 是一个流行的电子商务平台,旨在帮助用户创建、运营和增长自己的在线商店。通过 Shopify,用户可以轻松地创建一个美观、易于使用的在线商店,展示和销售自己的商品或服务,并管理订单、运输、支付和营销活动等业务。…

汇编语言(1)——寄存器

文章目录1.通用寄存器2.字在寄存器中存储3.确定物理地址的方法4.内存分段表示法5.CS、IP寄存器及代码段6.jmp指令1.通用寄存器 8086中的所有寄存器都是16位的,可以存放两个字节,AX、BX、CX、DX这四个寄存器用来存放一般性的数据,统称为通用寄…

C++之引用

1.引用的基本使用 作用:给变量起别名 语法:数据类型 &别名 原名 可以看出这只是给变量起了一个别名,里面所存的数据都是一样的,没有变化。 2.引用使用的注意事项 1.引用一定要初始化,//int&a;//这个是错误…

类ChatGPT平台推荐【国内访问ChatGPT4】

类ChatGPT平台推荐【国内访问ChatGPT】 1 ChatGPT介绍 ChatGPT是OpenAI开发出的一个人工智能模型。但是国内大部分人因为网络限制无法访问和使用。今天推荐国内访问途经。 ChatGPT作用: 回答问题信息搜索语言翻译文本生成文案编写代码编程助手创意写作 … 注意&am…

eNSP 本地AAA配置实验

关于本实验本实验要求将路由器AR1配置为AAA服务器,以本地认证方式对尝试登录AR1的用户进行身份认证和授权。路由器AR2作为登录用户(AAA客户端),以Telnet的方式登录AR1.读者需要在AR1中创建一个名为datacom的管理员域,并…

Apache iotdb-web-workbench 认证绕过漏洞 CVE-2023-24829

漏洞简介影响版本 0.13.0 < 漏洞版本 < 0.13.3漏洞主要来自于 iotdb-web-workbench IoTDB-Workbench是IoTDB的可视化管理工具&#xff0c;可对IoTDB的数据进行增删改查、权限控制等&#xff0c;简化IoTDB的使用及学习成本。iotdb-web-workbench 中存在不正确的身份验证漏…

Exception 和 Error

Exception 和 Error 在Java中&#xff0c;Throwable是所有异常类的父类。它有两个子类&#xff1a;Error和Exception。 Error表示系统错误或者资源耗尽等问题&#xff0c;通常情况下不应该捕获这些异常&#xff0c;而是让程序自然退出并由系统进行处理。比如OutOfMemoryError…

Pytorch梯度下降——up主:刘二大人《PyTorch深度学习实践》

教程&#xff1a; https://www.bilibili.com/video/BV1Y7411d7Ys?p2&vd_source715b347a0d6cb8aa3822e5a102f366fe 数据集&#xff1a; xdata[1.0,2.0,3.0]ydata[2.0,4.0,6.0]x_{data} [1.0, 2.0, 3.0] \\y_{data} [2.0, 4.0, 6.0]xdata​[1.0,2.0,3.0]ydata​[2.0,4.0,6…

【HTB】Responder思路——Responder抓取ntlmhash、远程文件包含、远程代码执行、evil-winrm连接

前言 接下来一段时间会做关于HTB的靶场内容&#xff0c;很遗憾我到现在才知道这个好东西&#xff0c;相见恨晚&#xff0c;如果我能早一些用这个靶场磨练自己的技术&#xff0c;或者现在要提升一大截&#xff0c;这次是Responder靶场的解析和思路&#xff0c;这个靶场确实比其…

Python中关于字典和Counter()的两点区别

文章目录区别一&#xff1a;区别二&#xff1a;总结&#xff1a;区别一&#xff1a; Python 字典 update() 方法用于更新字典中的键/值对&#xff0c;可以修改存在的键对应的值&#xff0c;也可以添加新的键/值对到字典中。 语法 d.update(e) 参数说明 将e中键-值对添加到字典…

PCB模块化设计06——HDMI接口PCB布局布线设计规范

目录PCB模块化设计06——HDMI接口PCB布局布线设计规范1、HDMI接口的定义2、HDMI管脚定义&#xff08;A型为例&#xff09;3、HDMI接口PCB布局要求4、HDMI接口布线要求PCB模块化设计06——HDMI接口PCB布局布线设计规范 1、HDMI接口的定义 高清晰度多媒体接口&#xff08;英文&…

推荐5款精致小巧无广告的软件

电脑软件有大有小&#xff0c;有热门有冷门。本文将推荐5款冷门但实用的win10软件&#xff0c;让你的电脑更高效、更省空间. 1.文本比较——WinMerge WinMerge是一款免费的文本比较工具&#xff0c;可以比较两个或多个文件或文件夹的差异&#xff0c;并支持合并和同步。它可以…

【深度学习】常见优化算法的NumPy和PyTorch实现

以下是NumPy和PyTorch实现的几种常见优化算法&#xff1a;其中参数含义如下&#xff1a;w&#xff1a;待优化参数。grad&#xff1a;参数的梯度。lr&#xff1a;学习率。mu&#xff1a;动量系数&#xff08;仅对Momentum算法有用&#xff09;。eps&#xff1a;防止除0操作的小量…

【C语言蓝桥杯每日一题】——跑步锻炼

【C语言蓝桥杯每日一题】—— 跑步锻炼&#x1f60e;前言&#x1f64c;排序&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神贯注的上吧&#xff01;&#xff01;&#xff01; &#x1f60a;作者简介…

SpringBoot启动流程源码分析一、入口参数研究和创建对象

个人搭建的博客唐小码&#xff0c;欢迎大家指教哦 引言 这不最近到金三银四的季节了么&#xff0c;有个朋友去参加了一个面试&#xff0c;回来的时候给我说其它还可以&#xff0c;但是问到SpringBoot的启动原理了&#xff0c;说了解的不深&#xff0c;我仔细转过头来也想了一…

python基础篇:什么是装饰器?装饰器有什么用?

上一篇介绍了python的函数&#xff0c;本文将介绍Python的装饰器&#xff0c;装饰器应用非常广泛&#xff0c;一定要好好掌握啊 什么是装饰器 装饰器是一种Python语言的特性&#xff0c;它允许在不修改已有函数的情况下&#xff0c;向函数添加额外的功能。装饰器本质上是一个函…

【设计模式】单例模式

一&#xff0c;定义单例模式&#xff1a;创建型模式之一&#xff0c;是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xf…
最新文章