【面试】Spark

Spark中Driver和Executor的作用

Driver
Spark的驱动器节点,负责运行Spark程序中的main方法,执行实际的代码。Driver在Spark作业时主要负责:

  • 将用户程序转化为作业(job)。
  • 负责Executor之间的任务(task)调度。
  • 监控Executor的执行状态。
  • 通过UI展示运行情况。

Executor

  • 运行Spark作业中具体的任务,并且将执行结果返回给Driver。
  • 通过自身的块管理器(Block Manager)对用户要求缓存的RDD进行内存式存储。RDD式缓存在Executor进程内部的,这样任务在运行时可以充分利用缓存数据加速运算。

Application Job Stage Task

(1) Application
spark-submit 提交的一个spark任务
(2) Job
spark job是根据action算子触发的,遇到action算子就会起一个job
Simply put, a Spark Job is a single computation action that gets instantiated to complete a Spark Action. A Spark Action is a single computation action of a given Spark Driver.
(3) Stage
stage的划分依据就是看是否产生了shuflle(即宽依赖),遇到一个shuffle操作就划分为前后两 个stage
(4) Task
它是 stage 的子集,以分区数来衡量,分区数多少,task 就有多少

Action Transformer

  • Transformer是一个不需要实际执行,外部用户无感知的操作
  • Action是一个数据计算执行操作

宽依赖和窄依赖

  • 窄依赖 指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个父RDD分区(O(1),与数据规模无关)
  • 宽依赖 指父RDD的每个分区都可能被多个子RDD分区所使用,子RDD分区通常对应所有的父RDD分区(O(n),与数据规模有关)

Spark为什么比MR快

  1. DAG 相比Hadoop的MapReduce 在大多数情况下可以减少IO次数。 DAG可以连续shuffle,也就是DAG可以包含多个MapReduce操作,不用每次Map后落盘。
  2. Spark shuffle优化。 MapReduce在shuffle时默认进行排序,Spark在Shuffle时则只有部分场景才排序(bypass机制不排序 groupby就是bypass),排序是非常耗时的,这样可以加快shuffle的速度。
  3. Spark 支持将反复使用的数据进行缓存。 checkpoint 机制
  4. 任务级别并行度上的不同。 MapReduce采用了多进程模型,而Spark采用的多线程模式。MapReduce的MapTask 和ReduceTask都是进程级别,都是jvm进程,每次启动都要重新申请资源,消耗不必要的时间;而SparkTask是基于线程的模型,通过复用线程池中的线程来减少启动和关闭Task的资源消耗

ByPass机制

https://blog.csdn.net/weixin_37090394/article/details/109023233
在这里插入图片描述

内存管理

https://www.cnblogs.com/frankdeng/p/9301783.html
https://blog.csdn.net/qq_22473611/article/details/105989061
https://cloud.tencent.com/developer/article/1194698

Spark集群会启动Driver和Executor两种JVM进程,前者为主控进程,后者负责执行具体的计算任务。由于Driver的内存管理相对简单,本文主要对Executor的内存管理进行分析,下文中的Spark内存均特指Executor的内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值