Spark学习

目录

一,Spark是什么

二,Spark的运行模式

三,Spark运行的角色有四类:

四,用户程序从最开始的提交到最终的计算执行,需要经历以下几个阶段:

 五,存在Master单点故障(SPOF)的问题。

六,Spark On Yarn的本质


一,Spark是什么

        Spark是一款分布式内存计算的统一分析引擎,是一个基于线程的分布式纯计算工具,为了数据共享和提高运行效率。

        Spark在处理数据时,可以将中间的处理结果存到内存中,并且提供了丰富的算子API

Spark的核心就是Spark Core,可以进行海量离线数据的批处理计算

二,Spark的运行模式

三,Spark运行的角色有四类:

资源管理层面

管理者:Master角色:管理整个集群的资源,相当于YARN中的ResouceManger

工作中:Worker角色:管理单个服务器的资源,相当于YARN中的NodeManger

某任务管理者:Driver角色,管理单个Spark任务在运行时的工作,相当于YARN中的ApplicationMaster

某任务执行者:Executor角色:单个任务运行时的时候的工作者,相当于YARN容器运行的TASK,具体工作的进程

每一个Spark进程运行时,会绑定到Driver所在机器的4040端口,如果4040被占用,会顺延到4041,4042等

Standalone架构,是Spark自带的一种集群模式,

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

Master的默认端口为8080,同样如果被占用,会顺延到8081,8082,8083等

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

集群模式下程序是在集群上运行的,不要直接读取本地文件,应该读取hdfs上的

因为程序运行在集群上,具体在哪个节点上我们运行并不知道,其他节点可能并没有那个数据文件

从图中可以看到Spark Application运行到集群上时,由两部分组成:Driver Program和Executors。
第一、Driver Program
1.相当于AppMaster,整个应用管理者,负责应用中所有Job的调度执行;
2.运行JVM Process,运行程序的MAIN函数,必须创建SparkContext上下文对象;
3.一个SparkApplication仅有一个;
第二、Executors
1.相当于一个线程池,运行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 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 只会处 理单一分支上的数据。
bin/spark-submit --master spark://server:7077 Standalone 提交 Spark 应用的命令

 五,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)-- 可以用于生产环境。
ZooKeeper 提供了一个 Leader Election 机制,利用这个机制可以保证虽然集群存在多个 Master ,但是只有一个是 Active的,其他的都是Standby 。当 Active Master 出现故障时,另外的一个 Standby Master 会被选举出来。由于集群的信息
,包括 Worker Driver Application 的信息都已经持久化到文件系统,因此在切换的过程中只会影响新 Job 的提交,对于正在进行的Job 没有任何的影响。加入 ZooKeeper 的集群整体架构如下图所示。

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

六,Spark On Yarn的本质

Master 角色由 YARN ResourceManager 担任 .
Worker 角色由 YARN NodeManager 担任 .
Driver 角色运行在 YARN 容器 内或提交任务的 客户端进程
真正干活的 Executor 运行在 YARN 提供的容器
Spark On Yarn 需要啥 ?
1. 需要 Yarn 集群 : 已经安装了
2. 需要 Spark 客户端工具 , 比如 spark-submit, 可以将 Spark 程序提交到 YARN
3. 需要被提交的代码程序 : ,如 spark/examples/src/main/python/pi.py 此示例程序 , 或我们后续自己开发的 Spark 任务
Spark On YARN 是有两种运行模式的 , 一种是 Cluster 模式一种是 Client 模式 .
这两种模式的区别就是 Driver 运行的位置 .
Cluster 模式即 :Driver 运行在 YARN 容器内部 , ApplicationMaster 在同一个容器内
Client 模式即 :Driver 运行在客户端进程中 , 比如 Driver 运行在 spark-submit 程序的进程中
Cluster 模式
Client 模式
Client模式和Cluster模式最最本质的区别是:Driver程序运行在哪里。
Client 模式:学习测试时使用,生产不推荐 ( 要用也可以 , 性能略低 , 稳定性略低 )

1.Driver 运行在 Client , 和集群的通信成本高
2.Driver 输出结果会在客户端显示
Cluster 模式:生产环境中使用该模式
1.Driver 程序在 YARN 集群中,和集群的通信成本低
2.Driver 输出结果不能在客户端显示

3. 该模式下 Driver 运行 ApplicattionMaster 这个节点上 , Yarn 管理,如果出现问题, yarn 会重启ApplicattionMaster(Driver)
具体流程步骤如下:
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 合为一体,示意图如下:
具体流程步骤如下:
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 上执行。

 

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

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

相关文章

SOC内部集成网络MAC外设+ PHY网络芯片方案:PHY芯片基础知识

一. 简介 本文简单了解一下 "SOC内部集成网络MAC外设 PHY网络芯片方案" 这个网络硬件方案中涉及的 PHY网络芯片的基础知识。 二. PHY芯片基础知识 PHY 是 IEEE 802.3 规定的一个标准模块。 1. IEEE规定了PHY芯片的前 16个寄存器功能是一样的 前面说了&#xf…

# 达梦数据库知识点

达梦数据库知识点 测试数据 -- SYSDBA.TABLE_CLASS_TEST definitionCREATE TABLE SYSDBA.TABLE_CLASS_TEST (ID VARCHAR(100) NOT NULL,NAME VARCHAR(100) NULL,CODE VARCHAR(100) NULL,TITLE VARCHAR(100) NULL,CREATETIME TIMESTAMP NULL,COLUMN1 VARCHAR(100) NULL,COLUMN…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时,“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角,尤其是在具身智能的领域。具身智能是一种思想,强调智能体通过与其环境的直接物理互动来实现智能行为。然…

腾讯云轻量2核2G3M云服务器优惠价格61元一年,限制200GB月流量

腾讯云轻量2核2G3M云服务器优惠价格61元一年,配置为轻量2核2G、3M带宽、200GB月流量、40GB SSD盘,腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图: 腾讯云轻量2核2G云服务器优惠价格 腾讯云:轻量应用服务器100%CPU性能…

YOLOv9改进策略 :卷积魔改 | 感受野注意力卷积运算(RFAConv)

💡💡💡本文改进内容:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 💡💡💡使用方法:代替YOLOv9中的卷积,使得更加关注感受野注意力,提升性能 💡💡💡RFAConv…

Go的数据结构与实现【Binary Search Tree】

介绍 本文用Go将实现二叉搜索树数据结构,以及常见的一些方法 二叉树 二叉树是一种递归数据结构,其中每个节点最多可以有两个子节点。 二叉树的一种常见类型是二叉搜索树,其中每个节点的值都大于或等于左子树中的节点值,并且小…

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、前言: 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代,作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…

阿里云通用算力型u1云服务器配置性能评测及价格参考

阿里云服务器u1是通用算力型云服务器,CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器,ECS通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xf…

AI 音乐的 “ChatGPT“ 时刻,SunoV3简介和升级教程

一句话总结 Suno AI音乐平台发布了V3版本,标志着AI音乐创作领域的一个重要进步,类似于ChatGPT在文本生成领域的影响。 关键信息点 Suno AI是专注于生成式AI音乐的平台,最新发布的V3版本在音质、咬字和节奏编排上有显著提升。V3版本的AI音乐…

[Flutter]打包IPA

1.直接使用Xcode运行iOS工程 不用flutter构建,在Xcode中是可以独立进行构建运行和打包发布的。 1).运行项目 先将flutter的build清理 $ flutter clean $ flutter pub get 然后立即用XCode打开iOS工程运行 运行会报错: error: The sandbox is not …

209基于matlab的无人机路径规划

基于matlab的无人机路径规划,包括2D路径和3D路径,三种优化算法,分别是蝙蝠算法(BA)、蝙蝠算法融合差分进化算法(DEBA)、结合人工势场方法的改进混沌蝙蝠算法(CPFIBA)。输出距离迭代曲线和规划的路径。程序已调通&#…

AI预测福彩3D第22弹【2024年3月31日预测--第4套算法重新开始计算第8次测试】

昨天周六单位事情比较多,忙了一天,回来比较晚了,实在没有闲暇时间去做预测了,先给各位道个歉。今天上午比较忙,下午有点空,趁这个时间赶紧把预测的结果发出来供大家参考。 今天继续对第4套算法进行测试&…

迅饶科技 X2Modbus 网关 GetUser 信息泄露漏洞复现

0x01 产品简介 X2Modbus是上海迅饶自动化科技有限公司Q开发的一款功能很强大的协议转换网关, 这里的X代表各家不同的通信协议, 2是T0的谐音表示转换, Modbus就是最终支持的标准协议是Modbus协议。用户可以根据现场设备的通信协议进行配置,转成标准的Modbus协议。在PC端仿真…

数据分析之Tebleau的度量和维度

维度 维度是分类的字段。如名称、国家、地区等,一般为非数字 度量 度量是数值字段。如销量、利润、折扣等,一般为数字 注意 字符串、日期格式为维度 [数据桶]连续型数据离散化为维度 例如:0,1,2,3&#xff…

linux-进程(1)

1.冯诺依曼体系结构 在讲解进程之前,要先知道什么是冯诺伊曼体系结构。冯诺依曼体系结构是如今最主流的体系结构,所有的硬件可以分为5大单元,单元之间存在交互。 运算器和控制器就是cpu,运算器就是帮助计算机做运算的&#xff0c…

vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2017-12629)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。此次7.1.0之前版本总共爆出两个漏洞:[XM…

OmniGraffle Pro for mac 出色的图形设计软件

OmniGraffle Pro是一款非常出色的图形设计软件,它主要适用于Mac和iPad平台,可以用来轻松绘制各种精美的图表、示意图和界面设计。 软件下载:OmniGraffle Pro for mac中文注册激活版 以下是OmniGraffle Pro的一些主要特点和功能: 界…

How to install JDK on mac

文章目录 1. Install JDK on mac2. zshenv, zshrc, zprofile3. 查看java环境变量配置 1. Install JDK on mac Installation of the JDK on macOS 2. zshenv, zshrc, zprofile How Do Zsh Configuration Files Work? 3. 查看java环境变量配置 open Terminal,cd…

六、Django开发

六、Django开发 1.新建项目2.创建app2.1 第一种方法:2.2 利用pycharm中tools工具直接创建app 3.设计表结构(django)4.在MySQL中生成表5.静态文件管理6.部门管理6.1 部门列表 7.模板的继承8.用户管理8.1初识Form1.views.py2.user_add.html 8.2…

JMeter基础用法和测试WebSocket请求

目录 JMeter websocket插件安装测试接口的编写添加测试线程组创建取样器创建WebSocket连接创建循环控制器创建WebSocket request-response Sampler创建固定定时器 正则匹配上一个请求的数据做为当前请求参数正则编写使用匹配值 CSV文件读取参数添加汇总报告和结果树 JMeter web…