当前位置:网站首页 > R语言数据分析 > 正文

spark面试题目(spark面试题shuffle)



1. spark的shuffle 是什么?过程? 怎么调优?

在MapReduce过程中需要将各个节点上的同一类数据汇集到一个节点进行计算。把这些分布在不同节点的数据按照一定规则聚集到一起的过程,就称之为shuffle(Shuffle是Map和Reduce之间的操作,Shuffle 过程本质上就是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程)。


分割线:18/3/6有增加些许内容

在Spark中,只有宽依赖才会进行数据shuffle【所以也称之为ShuffleDependency,根据宽依赖划分Stage】,窄依赖不会进行数据shuffle【称之为NarrowDependency,只会划分一个Stage】。从容灾的角度来说,宽依赖需要恢复所有的父RDD。


史上最全的spark面试题 spark面试题shuffle_MapReduce

spark2.0及之后的版本中只存在SortShuffleManager而将原来的HashShuffleManager废弃掉(在1.2版本之前的Shuffle方法);

2. hadoop的MapReduce以及shuffle过程,画图。怎么调优?

主要参考:[6]

史上最全的spark面试题 spark面试题shuffle_大数据面试题集_02

2、随后yarn的ResourceManager对可用资源进行分配.

3、由NodeManager加载与监控containers.

4、通过applicationMaster与ResourceManager进行资源申请及状态交互,由NodeManagers进行MapReduce运行时job的管理.

3. spark的shuffle和Hadoop的shuffle(mapreduce)的联系和区别是什么

联系:两者都是将 mapper(Spark 里是 ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是DAG中下一个 stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer 以内存作缓冲区,边 shuffle 边 aggregate 数据,等到数据 aggregate 好以后进行 reduce() (Spark 里可能是后续的一系列操作)。Spark中的很多计算是作为MapReduce计算框架的一种优化实现。

从底层来看:最开始Spark尽量避免Hadoop多余的排序(MapReduce 为了方便对存在于不同 partition 的 key/value Records进行Group,就提前对 key 进行排序,这样做的好处在于 combine/reduce() 可以处理大规模的数据。Spark 认为很多应用不需要对 key 排序,所以Spark提供了基于hash的Shuffle写,通常使用 HashMap 来对 shuffle 来的数据进行 aggregate,这种方法不会对数据进行提前排序,并且在1.2版本之前,这种方法是默认方法——但是现在的默认方法还是基于排序的Shuffle,并且在在spark2.0及之后的版本中只存在SortShuffleManager而将原来的HashShuffleManager废弃掉(但是shuffleWriter的子类BypassMergeSortShuffleWriter和已经被废弃掉的HashShuffleWriter类似))[1][4]

从实现角度来看: Hadoop MapReduce 将处理流程划分出明显的几个阶段:map(), spill, merge, shuffle, sort, reduce() 等。每个阶段各司其职,可以按照过程式的编程思想来逐一实现每个阶段的功能。在 Spark 中,没有这样功能明确的阶段,只有不同的 stage 和一系列的 transformation操作,所以 spill, merge, aggregate 等操作需要蕴含在一些transformation操作中。

从数据流角度:Mapr只能从一个map stage接受数据,Spark 可以从多个 Map Stages shuffle 数据(这是 DAG 型数据流中宽依赖的优势,可以表达复杂的数据流操作)。

从数据粒度角度:Spark 粒度更细,可以更即时的将获取到的 record 与 HashMap 中相同 key 的 records 进行合并。

从性能优化角度来讲:Spark考虑的更全面。Spark 针对不同类型的操作、不同类型的参数,会使用不同的 shuffle write 方式。比如 Shuffle write 有三种实现方式 [2]

史上最全的spark面试题 spark面试题shuffle_大数据面试题集_03

4. 哪些算子涉及到shuffle操作

sortByKey、groupByKey、reduceByKey、countByKey、join、cogroup等聚合操作。

到此这篇spark面试题目(spark面试题shuffle)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • store 中文翻译(store翻译中文怎么读)2025-11-17 10:27:04
  • redhat官方网站怎么找到镜像文件(redhatlinux镜像文件)2025-11-17 10:27:04
  • cradio龙卷风(joplin龙卷风)2025-11-17 10:27:04
  • msvcr120.dll无法继续执行代码(win10vcruntime140.dll无法继续执行代码)2025-11-17 10:27:04
  • strip工具(stb工具)2025-11-17 10:27:04
  • nowcoder笔试会识别分屏吗(exam.nowcoder试题)2025-11-17 10:27:04
  • rmp是什么意思?(rmp是什么意思暗语知乎)2025-11-17 10:27:04
  • argparse用法(arrang用法)2025-11-17 10:27:04
  • 华为模拟器启动设备ar1错误代码40(华为模拟器启动设备ar1错误代码2)2025-11-17 10:27:04
  • cruise破解版安装(cruise2010破解版安装教程)2025-11-17 10:27:04
  • 全屏图片