Spark集群的运行基本流程是怎样的?

Spark集群的运行架构

Spark是基于内存计算的大数据并行计算框架,比MapReduce计算框架具有更高的实时性,同时具有高效容错性和可伸缩性,在学习Spark操作之前,首先介绍Spark运行架构,如图所示。

在上图中,Spark应用在集群上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor), 用 于 执 行 计 算 任 务 和 存 储 数 据。Spark将应用程序代码发送给所申请到的执行器,SparkContext对象将分割出的任务(Task)发送给各个执行器去运行。

需要注意的是,每个Spark应用程序都有其对应的多个执行器进程。执行器进程在整个应用程序生命周期内,都保持运行状态,并以多线程方式执行任务。这样做的好处是,执行器进程可以隔离每个Spark应用。从调度角度来看,每个驱动器可以独立调度本应用程序的内部任务。从执行器角度来看,不同Spark应用对应的任务将会在不同的JVM中运行。然而这样的架构也有缺点,多个Spark应用程序之间无法共享数据,除非把数据写到外部存储结构中。

Spark对底层的集群管理器一无所知,只要Spark能够申请到执行器进程,能与之通信即可。这种实现方式可以使Spark比较容易的在多种集群管理器上运行,例如Mesos、Yarn。

驱动器程序在整个生命周期内必须监听并接受其对应的各个执行器的连接请求,因此驱动器程序必须能够被所有Worker节点访问到。

因为集群上的任务是由驱动器来调度的,所以驱动器应该和Worker节点距离近一些,最好在同一个本地局域网中,如果需要远程对集群发起请求,最好还是在驱动器节点上启动RPC服务响应这些远程请求,同时把驱动器本身放在离集群Worker节点比较近的机器上。

Spark运行基本流程

Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,下图通过深入了解Spark运行基本流程。

(1)当一个Spark应用被提交时,根据提交参数在相应位置创建Driver进程,Driver进程根据配置参数信息初始化SparkContext对象,即Spark运行环境,由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。SparkContext启动后,创建DAG Scheduler(将DAG图分解成Stage)和Task Scheduler(提交和监控Task)两个调度模块。

(2)Driver进程根据配置参数向Cluster Manager申请资源(主要是用来执行的Executor),Cluster Manager接收到应用(Application)的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点上,通知Worker为应用启动多个Executor。

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

(4)Executor会向SparkContext反向注册申请Task。

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

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

怎样学习大数据?

要达到高薪,可以从Python入手,一步步的学习大数据开发知识。

开发入门:Linux入门 → MySQL数据库

核心基础:Hadoop

数仓技术:Hive数仓项目 

PB内存计算:Python入门 → Python进阶→ pyspark框架 → Hive+Spark项目 

这有一张大数据学习路线图,点击可放大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23701.html

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

相关文章

“数字”厨电成新宠?“传统”厨电如何凭实力年销破百亿?|厨房电器SMI社媒心智品牌榜

Social Power 核心解读 AI加持,数字厨电新物种持续走红 传统厨电发力社媒,“有范儿”实力吸睛 4月中下旬的“魔都”可谓热闹非凡,上海车展喧嚣未落,隔壁2023AWE(中国家电及消费电子博览会)的群雄逐鹿紧随…

PCIE知识点-022:PCIe 时钟结构

图1:参考时钟结构示意图[4] 1. Common Refclk Architecture Common Refclk Architecture,即同源参考时钟架构,PCIe收发设备共用一个时钟源,是目前是使用最为广泛的方案。 缺点: 对于适用同一 Common Clock 作为参考时…

新冠又临“涨潮”期,看我AI显身手

#疫情#北京时间5月24日,北京市卫生健康委发布2023年第20周疫情周报。报告显示,2023年第20周全市共报告法定传染病14种25544例,死亡1例。报告病例数居前5位的病种依次为:新型冠状病毒感染、其它感染性腹泻病、流行性感冒、肺结核和病毒性肝炎&…

chatgpt赋能python:Python请求头——让你的网络请求更有效率

Python请求头——让你的网络请求更有效率 网络请求是现代应用程序的核心。但是,如果你不了解Python请求头的概念和用途,那么你可能会面临一些棘手的问题。在本文中,我们将深入探讨Python请求头,了解其作用、语法和最佳实践。 什…

GPT-4平替版:MiniGPT-4,支持图像理解和对话,现已开源

项目地址:https://minigpt-4.github.io/ 论文链接:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf 代码:https://github.com/Vision-CAIR/MiniGPT-4 视频:https://youtu.be/__tftoxpBAw 数据集&#xff…

推荐|x86视觉运动控制一体机VPLC710

正运动技术始终围绕客户需求不断迭代升级产品及开发,积极探索工控自动化高质量发展新路径,着眼于全力为客户提供更优质的产品与服务,特此开发了一款可满足全场景高速高精及中大型产线设备应用需求的x86的IPC形态控制器。 VPLC710产品简介 VP…

【JavaSE】Java基础语法(九):封装

文章目录 ☔1. private关键字☔2. private关键字的使用☔3. this关键字☔4. this内存原理☔5. 封装思想 ☔1. private关键字 概述 : private是一个修饰符,可以用来修饰成员(成员变量,成员方法) 特点 : 被private修饰的成员&…

Git的使用

Git 概念 版本控制 软件版本: JDK:1.8,17,20 MYSQL:5.7,8.0 IDEA:2022,2023 文件版本: 保存重要的历史记录,恢复数据 版本控制软件的基础功能 保存…

创新管理工具:低代码平台在学校管理中的应用实践

随着信息技术的不断发展,学校管理也随之发生了变革。传统的学校管理方式往往是依靠人工操作,存在信息不透明、效率低下等问题,而数字化管理的出现,可以帮助学校提高管理效率、降低管理成本、提升数据统计和分析能力。而低代码技术…

EDR(端点、端点检测与响应中心、可视化展现)

EDR基本原理与框架 EDR定义 端点检测和响应是一种主动式端点安全解决方案,通过记录终端与网络事件(例如用户,文件,进程,注册表,内存和网络事件),并将这些信息本地存储在端点或集中数…

hive如何实现oracle中复杂的update sql

hive3.1有update语法,但是目前没用还是采用的非事务表,所以我们用其他的办法来解决hive的update问题 简单的update oracle update student set namecclovezbf where id1 hive insert overwrite table student select id, if(id1,cclovezbf,name) n…

LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/group-anagrams/description/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给你一个字符串数组&#x…

PowerShell系列(四):PowerShell进入交互环境的三种方式

目录 1、Win键X 方式 2、使用微软自带的搜索功能 3、命令行运行方式 4、命令行窗口方式 5、使用第三方命令行软件(Terminal)开启PowerShell环境 6、PowerShell交互环境执行脚本的一些优势 7、小技巧 今天继续给大家讲解PowerShell相关的知识&…

发现一个好玩的东西:Markdown 使用 Emoji 表情

Markdown 使用 Emoji 表情 玩法1、复制和粘贴表情符号2、使用表情符号简码Markdown 定义列表 玩法 有两种方法可以将表情符号添加到Markdown文件中: 将表情符号复制并粘贴到Markdown格式的文本中或者键入emoji shortcodes。 1、复制和粘贴表情符号 在大多数情况…

鸿蒙Hi3861问题解决-[OHOS ERROR] clang not found, install it please

一、简介 在使用DevEco进行编译时出现[OHOS ERROR] clang not found, install it please问题,导致编译失败,这里做个问题记录。 二、解决 这种问题其实还是工具链安装不全造成的。 安装gn 这里用的是VSCode DevEco组件,里边包含了gn组件的安…

【分立元件】MOSFET如何用于同步整流

在电力电子中我们会使用二极管做开关,当二极管导时,相当于开关闭合,当二极管截止时,相当于开关断开。但是二极管在导通时的管压降在低压电源电路中是一个损耗来源,所以一般我们首选使用的是肖特基二极管,因为肖特基二极管的管压降比较低。 如下所示为非同步BUCK电源拓朴…

mybatis-plus实现逻辑删除(详细!)

文章目录 什么是逻辑删除?为什么用到逻辑删除?在springboot使用Mybatis-Plus提供的逻辑删除1、在application.yml配置2、 实体类字段上加上TableLogic注解演示 什么是逻辑删除? 逻辑删除的本质是修改操作,并不是真正的删除&#…

如何在华为OD机试中获得满分?Java实现【报数游戏】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 100个人围成一圈,每个人…

多线程 -- 线程安全问题(3)

本篇重点: 总结线程安全问题的原因以及解决办法 目录 synchronized 加锁关键字join 和 synchronized 的区别volatile 关键字 在上一篇中我们介绍了Thread类的基本使用方法, 本篇将会介绍有关于线程的安全问题 线程不安全的原因: 抢占式执行(罪魁祸首, 万恶之源) 多个线程修改同…

CTF入门指南

何为CTF ? CTF(Capture The Flag)夺旗比赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…