大数据 - Spark系列《十二》- 名词术语理解

  Spark系列文章:

大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客

大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客

大数据 - Spark系列《四》- Spark分布式运行原理-CSDN博客

大数据 - Spark系列《五》- Spark常用算子-CSDN博客

大数据 - Spark系列《六》- RDD详解-CSDN博客

大数据 - Spark系列《七》- 分区器详解-CSDN博客

大数据 - Spark系列《八》- 闭包引用-CSDN博客

大数据 - Spark系列《九》- 广播变量-CSDN博客

大数据 - Spark系列《十》- rdd缓存详解-CSDN博客

大数据 - Spark系列《十一》- Spark累加器详解-CSDN博客

目录

  1. 🥙Task(任务描述)和Task实例(真正运行)  

  2. 🥙Stage(阶段)  

  3.🥙TaskSet和Task  

  4. 🥙DAG  

  5. 🥙Driver端  

  6. 🥙Executor  

  7.🥙job  

8.🥙Application(应用)

?Spark面试题总结:

  1. 🧀什么是闭包引用?  

  2. 🧀什么是广播变量?  

  3. 🧀什么是累加器?  

  4. 🧀有哪些常见的分区器?  

  5. 🧀spark的coalesce和repartition的区别  

  6. 🧀spark的cache和persist的区别  

  7. 🧀说一下宽依赖和窄依赖  

  1. 🥙Task(任务描述)和Task实例(真正运行)  

  • Task(任务描述)指的是由Driver程序发送给Executor程序的逻辑单元,用于执行作业中的某个阶段。

  • Task实例(任务实例)是指Executor上真正运行的任务,它们根据Task描述执行相应的计算逻辑。

每个Task实例在Executor上运行时,会按照Task描述中的逻辑,处理相应的数据分区,并且执行对应的计算操作。一个Task描述可以有多个Task实例并行执行,每个Task实例独立处理数据分区,最终将计算结果返回给Driver程序。

Task在spark内部共有2种: shuffleMapTaskresultTask

最后一个stage所产生的task,是resultTask , 最后后一个阶段为ResultStage

其他stage所产生的task,都属于shuffleMapTask , 其他的阶段为ShuffleMapStage

  2. 🥙Stage(阶段)  

  • 以shuffle为分界线,将DAG转换逻辑从整体划分成段,每一段就称之为一个Stage

  • 一个阶段对应一个TaskSet

  • task任务的个数和阶段的最后一个rdd的分区数一致

  3.🥙TaskSet和Task  

  • 一个阶段对应一个TaskSet

  • 最后一个rdd有四个分区,则会创建4个task实例。这4个task实例会放在这个TaskSet里面。

  • Task: 执行计算的任务单元

  4. 🥙DAG  

DAG(Directed Acyclic Graph)叫做有向无环图,是的一系列RDD转换关系的描述,阶段的描述

  

 

  5. 🥙Driver端  

  • 提交程序的客户端

  • 初始化作业的客户端(阶段的划分,DAG的创建,任务的创建,任务的调度都是在Driver端执行的)

  

  6. 🥙Executor  

执行具体Task的远程端口

  7.🥙job  

具体的任务作业

一个行动算子就触发了一个job(此说法:直观但不精确)

有些行动算子,可能触发多个job,比如take( )

有些transformation算子,也可能会触发job,比如sortByKey()算子[因为它要用rangepartitioner]

一个job就是一个dag的运算流程(触发了一次sc.runJob() 就是一次job)

  

8.🥙Application(应用)

创建一个sparkContext,就生成了一个application

目前Spark系列文章已经更新到第十二篇,Spark第二阶段学习也已经完成。对此,特对知识点做了一个汇总如下

对于第一阶段面试题的整理可参考如下链接:

大数据 - Spark系列《四》- Spark分布式运行原理_spark的哪些操作是分布式并行的,哪些是串行的,如何知道-CSDN博客

?Spark面试题总结:

  1. 🧀什么是闭包引用?  

算子使用了一个算子外的变量,这就是闭包引用

  2. 🧀什么是广播变量?  

它是spark共享数据的一种机制,它会在整个集群中缓存一份数据,每个节点去复制一份,不需要在每个task实例中创建数据对象,从而提升数据的传输效率。

  3. 🧀什么是累加器?  

它是一个全局的共享可写变量。它可以在每一个任务实例中进行计数,然后进行汇总,最后输出在driver端

  4. 🧀有哪些常见的分区器?  

常见的分区器包括HashPartitioner和RangePartitioner等。

  5. 🧀spark的coalesce和repartition的区别  

repartition一般用于增加rdd的分区数量,它通过shuffle对数据重新进行分区

coalesce一般用于减少rdd的分区数量,它可以在不触发shuffle的情况下,将数据从多个分区合并成较少的分区。

  6. 🧀spark的cache和persist的区别  

  • cache():

    • cache()是RDD的一个方法,用于将RDD缓存到内存中。它是persist()方法的一种特殊情况,使用默认的存储级别MEMORY_ONLY。

    • cache()方法是一个懒加载操作,调用后并不会立即触发计算,而是等到第一次调用action操作时才会执行。

  • persist():

    • persist()方法是RDD的通用持久化方法,它允许指定不同的存储级别(如MEMORY_ONLY、MEMORY_AND_DISK、MEMORY_ONLY_SER等)。

    • 与cache()方法不同,persist()方法是一个动作,调用后会立即触发计算,并将计算结果持久化到指定的存储级别。

  7. 🧀说一下宽依赖和窄依赖  

  • 窄依赖

上游RDD的任意一个分区的数据只会被下游某一个分区引用

  • 宽依赖

会产生shuffle,上游RDD的任意一个分区的数据可能会被下游所有分区引用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值