Spark01:Spark工作原理

news2024/12/24 7:15:20

1. Spark执行数据计算的整个流程

首先通过Spark客户端提交任务到Spark集群,然后Spark任务在执行的时候会读取数据源HDFS中的数据,将数据加载到内存中,转化为RDD,然后针对RDD调用一些高阶函数对数据进行处理,中间可以调用多个高阶函数,最终把计算出来的结果数据写到HDFS中。

2. 什么是RDD

RDD通常通过Hadoop上的文件,即HDFS文件进行创建,也可以通过程序中的集合来创建
RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集

RDD的特点:

  • 弹性:RDD数据默认情况下存放在内存中,但是在内存资源不足时,Spark也会自动将RDD数据写入磁盘
  • 分布式:RDD在抽象上来说是一种元素数据的集合,它是被分区的,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作
  • 容错性:RDD最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来如果某个节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己的数据来源重新计算该partition的数据。

 3. Standalone模式下的Spark架构

 在Standalone模式下,在Spark集群中主要包含以下进程。

  • Master: 在集群主节点中启动的进程,主要负责集群资源的管理和分配、集群的监控等。
  • Worker:在集群从节点中启动的进程,主要负责启动Executor执行具体的数据处理和计算任务。
  • Executor:此进程由Worker负责启动,主要用于执行数据处理 和计算任务。
  • Driver:一个特殊的Executor进程,主要负责运行Spark程序的main()函数、创建Spark的上下文(SparkContext),生成并发送Task到Executor中等。
  • Task:一个线程,又Executor负责启动,它是真正负责干活的。

工作原理:如果所示

(1)在Spark客户节点上启动Driver进程,创建SparkContext,开始执行spark代码。

(2)Driver进程启动后做一些初始化操作,它会找到集群的Master节点,对Spark任务进程注册。

(3)Master节点收到Spark任务的注册申请后,会发送请求给Worker节点,进行资源的调度和分配。

(4)Worker节点在收到Master节点的请求后,会为Spark任务启动Executor进程,会启动一个或多个Executor。具体启动多少,由任务的参数配置决定的

(5)Executor在启动之后,会向Driver进行反注册,这样Driver就知道哪些Executor在为它服务了。

(6)Driver会根据在spark任务中对RDD定义的操作,提交一堆的Task到Executor上执行。Task中执行的其实就是flatMap、map这些高阶函数。

4. ON YARN模式下的Spark架构

ON YARN 模式下的Spark架构,可以细分为:

YARN-Client模式下的 Spark ON YARN 架构

YARN-Cluster模式下的Spark ON YARN 架构

 YARN-Client模式下的 Spark ON YARN 架构如图所示:

(1)Spark客户端节点向YARN中提交Spark任务:首先向YARN的ResourceManager申请启动AppMaster(Application Master),然后在Driver进程中创建SparkContext

(2)ResourceManager在收到请求后,会在集群中选择一个NodeManager为应用程序分配第一个Container,并且在这个Container中启动应用程序的AppMaster。YARN-Client模式中的AppMaster只会联系SparkContext进行资源的分配。

(3)AppMaster向ResourceManager进行注册,根据任务信息向ResourceManager申请资源(Container)

(4)AppMaster在申请到资源(Container)后。会与对应的NodeManager进行通信,创建Container,启动Executor。

(5)在Driver进程中的SparkContext会分配Task给Executor去执行,Executor运行Task并向Driver汇报执行的状态和进度,从而可以在任务失败的时候重新启动任务。

(6)在Spark运行任务完成后,SparkContext向ResourceManager申请注销并关闭自己。

 注意:在YARN-Client模式和YARN-Cluster模式下,Spark ON YARN 架构的区别是:Driver进程运行的位置不同

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElementUI——案例1用户管理(基于SpringBoot)

1.前期准备 备注:主要涉及组件container组件,导航菜单组件,router路由组件,carousel 走马灯组件,Image组件,Table表格组件 #1.在项目开发目录使用脚手架新建vue项目(需要提前安装好node和webp…

无字母数字webshell提高

前言 元旦快乐 -- 转眼就到了2023年 新的一年继续努力 在p神博客中看到一个 通过上传临时文件进行rce,便想着写一篇文章,记录一下这个小trick。太强了 比如给你下面这么一串代码。正如文章标题 无字母数字,如果匹配到字母和数字&#xf…

【Vuex快速入门】vuex基础知识与安装配置

vuex快速入门——什么是vuex?创作背景vuex基础知识一、vuex是什么?二、vuex的组成三、为什么使用vuex?四、什么时候使用vuex?vuex的安装配置一、直接下载 / CDN引用二、npm安装vuex三、yarn安装四、自己构建更多内容可参考Vuex官方…

[从零开始]用python制作识图翻译器·二

AlsoEasy-RecognitionTranslator需求分析系统分析功能拆解工程语言选择技术可行性分析具体实现需求分析 见上篇[从零开始]用python制作识图翻译器一 上篇分析了该产品的需求以及市场上的可行性(没有被吊打的竞品)。而本篇将着重于分析如何实现。 系统分析…

gateway基本配置

目录 1、gateway简介 2、gateway核心概念 3、路由 4、断言 5、过滤器 5.1、过滤器介绍 5.2、内置局部过滤器与使用 5.3、内置全局过滤器 5.4、自定义全局过滤器 5.4.1、黑名单校验 5.4.2、模拟登录校验 6、一个简单的gateway配置实例 1、gateway简介 路由转发 执行…

Linear Regression with PyTorch 用PyTorch实现线性回归

文章目录4、Linear Regression with PyTorch 用PyTorch实现线性回归4.1 Prepare dataset 准备数据集4.2 Design Model 设计模型4.2.1 __call__() 作用4.3 Construct Loss and Optimizer 构造损失和优化器4.4 Training Cycle 训练周期4.5 Test Model 测试模型4.6 Different Opti…

redis缓存淘汰策略

定时删除 Redis不可能时时刻刻遍历所有被设置了生存时间的key,来检测数据是否已经到达过期时间,然后对它进行删除。 立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。…

zookeeper学习笔记2(小D课堂)

zookeeper数据模型: 我们的zookeeper是以节点的形式存在的,这样的形式和数据结构中的树的形式很像。同时也很像我们的linux的结构,例如linux的/user/local目录下可以有我们的/usr/local/tomcat目录。这样的节点形式。 我们的zookeeper中的每…

算法练习-常用查找算法复现

一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2023.1.1 Last edited: 2023.1.1 目录 算法练习-常用查找算法复现(PS:1 -- 3自己写的,4、5懒得写了&#xf…

PHP开发者之路

我们经常会发现,历时四年软件专业的大学生毕业居然找不到工作,即便找到了工作也只能是做一些简单的辅助性工作。 那么我们不禁要问,究竟是什么原因让我们可爱的大学生们学而无用,或者用而不学呢? 我认为主要是因为现…

三角形年份aabb3n+1近似计算阶乘之和数据统计水仙花数韩信点兵倒三角形子序列的和分数化小数排列蛇形填数sprintf竖式问题

目录 P16_习题1-6_三角形 P16_习题1-7_年份 P20_eg2-1_aabb 为什么是int n a*1100 b*11 为什么要将向下取整? P22_eg2-2_3n1问题 P24_eg2-3_近似计算 P25_eg2-4_阶乘之和 P27_eg2-5_数据统计 P34_习题2-1_水仙花数 P34_习题2-2_韩信点兵 P34_习题2-3_倒…

Fragment全文详解(由浅入深_源码分析)

相信android开发者们一定或多或少的用过Fragment,但是对于其更深层次的原理我猜可能大部分应该都没有了解过,今天这里就由浅入深,整体对Fragment做一个全面解析。 基础介绍 Fragment是什么以及为什么要有Fragment呢? Fragment直…

长沙烟火气回来了,颐而康客流回暖为什么这么快?

随着一大批阳康的人们走出家门,长沙这座消费之城也逐步恢复了往日的活力。车多起来了、路堵起来了、线下店铺恢复营业了、长沙的烟火气息又回来了。 在颐而康万家丽西子店的大厅里,等候休息区已经坐满了顾客,他们有的在等待,有的…

Centos6从零开始安装mysql和tomcat后台环境,并成功部署Tomcat项目

最近因为搞定了一些环境的搭建因为项目过于老旧的缘故我从centosstream9一直改换7一直到6都没有成功一直到改成6.5的32位版本才算是成功搭建完成所以特地来写一篇文章记录一下。 首先我的liunx使用版本是 centos6.5 32位 java版本:jdkCentos6从零开始安装mysql和tom…

7-6 整除光棍

这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定…

【Kuangbin数论】阿拉丁和飞毯

4577. 阿拉丁和飞毯 - AcWing题库 题意&#xff1a; 思路&#xff1a; 就是去求x和y 使得 1.x!y 2.x*ya 3.min(x,y)b 一开始想的是去根号n地枚举a的约数 &#xff0c;然后直接统计 但是这样肯定T&#xff0c;所以换成dfs枚举约数去了 但是也T了 首先a*a<b的话直接特…

前端 | 手把手教你装饰你的github profile(github 首页)

1.创建存储库 您可以创建一个与您的 github 帐户名同名的存储库 添加README文件 2.编辑README.md 现在&#xff0c;可以根据自己的喜好修改 repo 中的自述文件&#xff0c;但我在考虑包含哪些信息时查看了其他开发人员的资料。通常包括简短的介绍、使用的技术堆栈和联系方式…

Buildroot编译hisi平台根文件系统

Buildroot编译hisi平台根文件系统 文章目录1. 下载Buildroot源码2. Menuconfig配置3. 编译Buildroot3.1 手动下载软件包3.2 kernel header 报错3.3 arm-hisiv300-linux-gcc-ar&#xff1a;cannot find plugin liblto_plugin.so3.4 /media/data/hisi/buildroot-2022.02.8/output…

C++类的多种构造函数

目录默认构造函数普通构造函数拷贝构造函数转换构造函数移动构造函数举例两个场景下面以Complex 复数类来学习C类中的各种构造函数; #include <iostream> using namespace std;//复数类 class Complex{friend ostream & operator<<(ostream &out, Complex…

2022年终结——人生中最美好的一站

文章目录前言回顾2022工作上学习上投资上生活上展望2023工作学习投资生活总结有一种责任与压力&#xff0c;叫做上有老下有小&#xff0c;但有一种幸福也叫做上有老下有小&#xff0c;当你遭遇挫折与困难时&#xff0c;这些“老小”以及那个同龄的“她”是你坚实的后盾&#xf…