Spark-Core中那些你不知道的面试题

1.Application

使用SparkSubmit提交的个计算应用,一个Application中可以触发一到多次Action,触发一次Action形成一个DAG,一个DAG对应一个Job,一个Application中可以有一到多个Job

2.Job

Driver向Executor提交的作业,触发一次Acition形成一个完整的DAG,一个DAG对应一个Job,一个Job中有一到多个Stage,一个Stage对应一个TaskSet,一个TaskSet中有一到多个Task

3.DAG

概念:有向无环图,是对多个RDD转换过程和依赖关系的描述,触发Action就会形成一个完整的DAG,一个DAG就是一个Job

4.Stage

概念:任务执行阶段,Stage执行是有先后顺序的,先执行前的,在执行后面的,一个Stage对应一个TaskSet,一个TaskSet中的Task的数量取决于Stage中最后一个RDD分区的数量

5.Task

概念:Spark中任务最小的执行单元,Task其实就是类的实例,有属性:从哪里读数据,有方法:处理数据的逻辑,Task的数量决定决定并行,同时也要考虑可用的cores

6. Task的分类

6.1 ShuffleMapTask:

可以读取各种数据源的读数据,也可以读取shuffle后的数据,专门为shuffle做准备

6.2 ResultTask:

可以读取各种数据源的读数据,也可以读取shuffle后的数据,专门为了产生计算结果

7.TaskSet

保存同一种计算逻辑多个Task的集合,一个TaskSet中的Task计算逻辑都一样,计算的数据不一样

8.dependency

概念:依赖关系,指的是父RDD和子RDD之间的依赖关系

窄依赖:没有shfuffle产生,多个算子会被合并到一个Task中,即在一个pipeline中

宽依赖:有shuffle产生,是划分Stage的依据

9.Shuffle

概念:需要通过网络将数据传输到多台机器,数据被打散,但是有网络传输,不一定就有shuffle,上游RDD的一个分区将数据给了下游RDD的多个分区,即是shuffle,需要注意的是,shuffle过程是下游的Task到上游拉取数据,不是上游Task发送给下游的,Shuffle的功能是将具相一定规律的数据按照指定的分区器的分区规则,通过网络,传输到指定地一台机器的一个分区中即Task中

10.cache/persist

1. 这两个特殊的算子,既不是action算子,也不是transformation算子,因为调用这两个算子不会生成新的RDD所以不是transformation算子,cache和persist方法,严格来说,不是Transformation,因为没有生成新的RDD,只是标记当前rdd要cache或persist

2. cache、persist的使用场景:一个application多次触发Action,为了复用前面RDD计算好的数据,避免反复读取HDFS(数据源)中的数据和重复计算

3. 用途:可以将数据缓存到内存或磁盘【executor所在的磁盘】,第一次触发action才放入到内存或磁盘,以后再出发Action会读取缓存的RDD的数据再进行操作并且复用缓存的数据一个RDD多次触发Action缓存才有意义

4. 如果将数据缓存到内存,内存不够,以分区位单位,只缓存部分分区的数据,

5. persist支持多种StorageLevel,可以将数据序列化默认放入内存,使用的是java对象存储,但是占用空间大,优点速度快,也可以使用其他的序列化方式(一般我们使用的是MOMERY_AND_DISK_SER,使用的序列化方式为:kryo),cache底层调用的是persist方法,可以指定其他存储级别,原始的数据,经过整理过滤后再进行cache或persist效果更佳

11. checkpoint

1. Checkpoint使用场景:适合复杂的计算【机器学习、迭代计算】,为了避免丢失数据重复计算,可以将宝贵的中间结果保存到hdfs中,中间结果安全

2. 在调用rdd的checkpoint方法之前,一定要指定checkpoint的目录即sc.setCheckPointDir

3. 为保证中间结果安全,将数据保存到HDFS中,分布式文件系统,可以保证数据不丢

4. 第一次触发Action,才做checkpoint,会额外触发一个job,这个job的目的就是将结果保存到HDFS中

5. 如果RDD做了checkpoint,这个RDD以前的依赖关系就不在使用了

6. 触发多次Action,checkpoint才有意义,多用于迭代计算

7. checkpoint严格的说,不是Transformation,只是标记当前RDD要做checkpoint

8. 如果checkpoint前,对rdd进行了cache,可以避免数据重复计算,如果有cache的数据优先使用cache,没有再使用checkpoint

重点:WordCount执行细节完整图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值