Spark流程梳理

组件概述

Driver

  1. 一个进程,运行着编写的Spark程序。Driver是主进程,有main函数。Driver启动后,向Master发送请求,进行注册申请资源。
  2. Executor启动后,会向Driver反注册,之后执行Spark程序,读取数据源,创建RDD生成Stage,提交task到Executor

Master

进程,主要负责资源的调度和分配、集群的监控

Worker

进程,

  1. 存储RDD的某个或者某个partition
  2. 启动其他进程和线程,对RDD上的partition处理和计算

Executor

进程,
一个Executor执行多个task,多个Executor可以并行执行,最大Executor为集群的可以CPU核数-1

Task

线程,具体的Spark任务是在Task上执行的,某些并行的算子,有多少个分区就有多少个Task,但是有些算子像take这样的只有一个task。

完整的流程

  1. Driver进程启动后会像Master注册
  2. Master接收Driver的请求之后,发送请求到Worker,进行资源分配和调度,也就是Executor的分配
  3. Worker接收到Master请求,启动Executor
  4. Executor启动之后,会向Driver反注册
  5. Driver反注册好Executor之后会正式执行Spark程序,读取数据源创建RDD
  6. 数据源被读取到多个Worker之后形成RDD
  7. 在Worker生成RDD后,Worker会根据对RDD定义的操作,提交相应数量的Task到Executor

Spark比Hadoop快多少倍

Spark比Hadoop快的原因主要是:

  1. task启动时间快,Spark是fork出线程,而MR是启动新进程
  2. 更快的shuffle,Spark只有在shuffle时才将数据放在磁盘,而MR不是
  3. 更快的工作流,MR工作流是由很多MR作业组成,他们之间的数据交互需要持久化到磁盘才行,而Spark支持DAG即pipeline,在没有shuffle时完全可以不把数据放磁盘
  4. 缓存,spark的缓存更高效,可以将数据缓存到内存
    在比较短的作业中,能快上100倍,但是在真实生产环境下,一般只会快2~3倍。

Spark架构原理 https://zhuanlan.zhihu.com/p/50416326

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark的执行流程包括以下几个步骤: 1. 创建SparkSession:SparkSession是Spark应用程序的入口点,用于与Spark进行交互。在创建SparkSession时,需要指定应用程序的名称和配置信息。 2. 创建RDD或DataFrame:Spark支持两种数据抽象类型:弹性分布式数据集(RDD)和数据框架(DataFrame)。RDD是Spark中最基本的数据结构,而DataFrame则是基于RDD的高级数据结构。你可以从外部数据源(如文件系统、数据库等)中读取数据,或者通过转换操作从已有的RDD或DataFrame中创建新的数据集。 3. 转换操作:Spark提供了一系列的转换操作,如map、filter、reduce等。转换操作并不立即执行,而是会生成一个新的RDD或DataFrame。这些转换操作可以链式调用,形成一个转换操作的有向无环图(DAG)。 4. 行动操作:当需要获取计算结果时,就需要触发行动操作。行动操作会触发Spark引擎根据转换操作的DAG来执行计算,并将结果返回给驱动程序。 5. 优化执行计划:在执行转换操作之前,Spark会对转换操作的DAG进行优化,以提高执行效率。优化过程包括选择最佳的执行计划、重排转换操作的顺序、合并相邻的转换操作等。 6. 任务划分与调度:Spark将执行计划划分为一系列的任务,并将这些任务分发到集群中的多个执行器上并行执行。任务划分的策略可以根据数据分区进行优化,以实现数据本地性和负载均衡。 7. 执行任务:每个执行器会接收到一些任务,并根据指定的转换操作进行计算。计算过程中,Spark会利用内存和磁盘进行数据交换和缓存,以提高计算效率。 8. 结果返回:当所有任务执行完成后,计算结果会被返回给驱动程序,可以进行进一步的处理或输出。 需要注意的是,Spark的执行流程是延迟计算的,只有在触发行动操作时才会真正执行计算。这种延迟计算的特性使得Spark可以对计算进行优化,并支持容错和增量计算等特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值