2024.1.3 Spark架构角色和提交任务流程

目录

[一 . Yarn的角色回顾](#一 . Yarn的角色回顾)

二、Spark提交任务流程

[1、Spark On Standalone](#1、Spark On Standalone)

[2. Spark on Yarn](#2. Spark on Yarn)

[三. Spark 比MapReduce执行效率高的原因](#三. Spark 比MapReduce执行效率高的原因)

四.Spark的排序算子


一 . Yarn的角色回顾

资源管理层面

集群资源管理者(Master) : ResourceManager

单机资源管理者(Worker) : NodeManager

任务计算层面

单任务管理者(Master) : ApplicationMaster

单位执行者(Worker) : Task (容器内计算框架的工作角色)

Spark中有多个角色,每个角色都有不同的功能和责任。以下是Spark中常见的角色:

  1. Driver:驱动程序是Spark应用程序的主要组件,负责定义应用程序的逻辑和控制执行流程。它将应用程序转化为任务,并将任务分发给集群中的执行器进行执行。

  2. Executor:执行器是在集群中运行的工作进程,负责执行驱动程序分发的任务。每个执行器都有自己的资源,包括CPU和内存,并且可以同时执行多个任务。

  3. Master:主节点是Spark集群的管理节点,负责分配任务给各个执行器,并监控它们的状态。它还负责维护集群的元数据信息,如应用程序的进度和资源分配情况。

  4. Worker:工作节点是集群中的计算资源提供者,负责接收和执行任务。它们通过与主节点通信来接收任务,并将任务分配给执行器进行执行。

  5. Cluster Manager:集群管理器是负责管理整个Spark集群的组件,它可以是Standalone模式下的Spark自带的集群管理器,也可以是其他第三方集群管理器,如YARN或Mesos。

  6. Application:应用程序是由驱动程序和执行器组成的Spark任务的集合。它定义了数据处理和计算逻辑,并通过驱动程序将任务分发给执行器进行执行。

  7. Task:任务是应用程序中的最小执行单元,由驱动程序定义并分发给执行器进行执行。每个任务都会处理一部分数据,并生成中间结果或最终结果。

  8. Stage:阶段是一组相互依赖的任务的集合,它们可以并行执行。Spark将应用程序的任务划分为多个阶段,以便更好地利用并行计算能力。

  9. RDD:弹性分布式数据集(RDD)是Spark中的核心数据抽象,它是一个可分区、可并行计算的数据集合。RDD可以在内存中缓存,并支持容错和恢复。

  10. DataFrame:DataFrame是一种以表格形式组织的分布式数据集,类似于关系型数据库中的表。它提供了丰富的数据操作和查询功能,并支持多种数据格式。

二、Spark提交任务流程

1、Spark On Standalone

  1. spark集群启动后,Worker向Master注册信息

  2. spark-submit命令提交程序后,driver和application也会向Master注册信息

  3. 创建SparkContext对象:主要的对象包含DAGScheduler和TaskScheduler

  4. Driver把Application信息注册给Master后,Master会根据App信息去Worker节点启动Executor

  5. Executor内部会创建运行task的线程池,然后把启动的Executor反向注册给Dirver

  6. DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的形式发送个TaskScheduler; 同时DAGScheduler还会处理由于Shuffle数据丢失导致的失败;

  7. TaskScheduler:维护所有TaskSet,分发Task给各个节点的Executor(根据数据本地化策略分发Task),监控task的运行状态,负责重试失败的task;

  8. 所有task运行完成后,SparkContext向Master注销,释放资源;

2. Spark on Yarn

Spark On Yarn的本质?

Master角色由YARN的ResourceManager担任。

Worker角色由YARN的NodeManager担任。

Driver角色运行在YARN容器内 或 提交任务的客户端进程中,真正干活的Executor运行在YARN提供的容器内。

Spark on yarn运行过程,为什么需要将jar包上传到hdfs:

因为集群环境中,只有node1安装了Spark环境,node2和node3都没有安装,所以node2和node3要运行Spark的时候,会先去hdfs中把Jar包下载到本地进行缓存,所以node2和node3才可以运行Spark

三. Spark 比MapReduce执行效率高的原因

1.内存计算:Spark将反复使用的数据缓存在内存中,减少了数据加载的耗时,相比之下,MapReduce将中间结果保存在文件中,需要频繁地进行磁盘读写操作,导致性能较低

2.数据交换:Spark使用内存进行数据交换,而MapReduce需要将数据写入磁盘再进行读取,这样的过程会增加IO开销,因此,Spark在数据交换方面更快.

3.DAG计算模型:Spark采用DAG(有向无环图)计算模型,可以将多个任务合并为一个DAG图,从而减少了任务之间的数据传输和磁盘读写.而MapReduce每个任务之间都需要进行磁盘读写,导致效率较低

综上所述,Spark通过内存计算,数据交换和DAG计算模型等方式提高了执行效率,相比之下,MapReduce在可靠性和内存占用方面更优,但性能较低

四.Spark的排序算子

sortByKey :对数据按照Key键进行排序

sortBy : 根据自定义规则对数据进行排序

top : 对数据进行降序排序,然后取前N个元素,返回的结果是List列表

相关推荐
进阶的架构师2 分钟前
互联网Java工程师面试题及答案整理(2024年最新版)
java·开发语言
易辰君4 分钟前
python爬虫 - 深入requests模块
开发语言·爬虫·python
人工智障调包侠4 分钟前
基于深度学习多层感知机进行手机价格预测
人工智能·python·深度学习·机器学习·数据分析
黄尚圈圈10 分钟前
快速理解mQ(三)——RabbitMQ 各种交换机的区别与应用
分布式·rabbitmq
木子020410 分钟前
java高并发场景RabbitMQ的使用
java·开发语言
无夜_11 分钟前
Prototype(原型模式)
开发语言·c++
看到请催我学习12 分钟前
内存缓存和硬盘缓存
开发语言·前端·javascript·vue.js·缓存·ecmascript
计算机编程-吉哥37 分钟前
计算机毕业设计 基于Python的智能文献管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
python·django·毕业设计·计算机毕业论文·计算机毕业设计选题·软件工程毕业设计论文·文献管理系统
Data 31741 分钟前
Hive数仓操作(十)
大数据·数据库·数据仓库·hive·hadoop
ON.LIN41 分钟前
Hadoop大数据入门——Hive-SQL语法大全
大数据·数据库·hive·hadoop·分布式·sql