大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day23】——Spark10

2021-12-07 09:20:59 浏览数 (1)

本栏目大数据开发岗高频面试题主要出自大数据技术专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。

文章目录
  • 面试题 01、union操作是产生宽依赖还是窄依赖?
  • 面试题02、窄依赖父RDD的partition和子RDD的parition是不是都是一对一的关系?
  • 面试题03、Hadoop中,Mapreduce操作的mapper和reducer阶段相当于spark中的哪几个算子?
  • 面试题04、Spark中的HashShufle的有哪些不足?
  • 面试题05、conslidate是如何优化Hash shuffle时在map端产生的小文件?
  • 总结

停不要往下滑了,

默默想5min,

看看这5道面试题你都会吗?

代码语言:javascript复制
面试题 01、union操作是产生宽依赖还是窄依赖?
面试题02、窄依赖父RDD的partition和子RDD的parition是不是都是一对一的关系?
面试题 03、Hadoop中,Mapreduce操作的mapper和reducer阶段相当于spark中的哪几个算子?
面试题04、Spark中的HashShufle的有哪些不足?
面试题05、conslidate是如何优化Hash shuffle时在map端产生的小文件?

以下答案仅供参考:

面试题 01、union操作是产生宽依赖还是窄依赖?

产生窄依赖。

面试题02、窄依赖父RDD的partition和子RDD的parition是不是都是一对一的关系?

不一定,除了一对一的窄依赖,还包含一对固定个数的窄依赖(就是对父RDD的依赖的Partition的数量不会随着RDD数量规模的改变而改变), 比如join操作的每个partiion仅仅和已知的partition进行join,这个join操作是窄依赖,依赖固定数量的父rdd,因为是确定的partition关系。

面试题03、Hadoop中,Mapreduce操作的mapper和reducer阶段相当于spark中的哪几个算子?

相当于spark中的map算子和reduceByKey算子,当然还是有点区别的,MR会自动进行排序的,spark要看你用的是什么partitioner。

面试题04、Spark中的HashShufle的有哪些不足?

1)shuffle产生海量的小文件在磁盘上,此时会产生大量耗时的、低效的IO操作; 2)容易导致内存不够用,由于内存需要保存海量的文件操作句柄和临时缓存信息,如果数据处理规模比较大的话,容易出现OOM; 3)容易出现数据倾斜,导致OOM。

面试题05、conslidate是如何优化Hash shuffle时在map端产生的小文件?

1)conslidate为了解决Hash Shuffle同时打开过多文件导致Writer handler内存使用过大以及产生过多文件导致大量的随机读写带来的低效磁盘IO; 2)conslidate根据CPU的个数来决定每个task shuffle map端产生多少个文件,假设原来有10个task,100个reduce,每个CPU有10个CPU,那么 使用hash shuffle会产生10100=1000个文件,conslidate产生1010=100个文件 注意:conslidate部分减少了文件和文件句柄,并行读很高的情况下(task很多时)还是会很多文件。

总结

今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?

0 人点赞