1. spark的shuffle 是什么?过程? 怎么调优?
在MapReduce过程中需要将各个节点上的同一类数据汇集到一个节点进行计算。把这些分布在不同节点的数据按照一定规则聚集到一起的过程,就称之为shuffle(Shuffle是Map和Reduce之间的操作,Shuffle 过程本质上就是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程)。
分割线:18/3/6有增加些许内容
在Spark中,只有宽依赖才会进行数据shuffle【所以也称之为ShuffleDependency,根据宽依赖划分Stage】,窄依赖不会进行数据shuffle【称之为NarrowDependency,只会划分一个Stage】。从容灾的角度来说,宽依赖需要恢复所有的父RDD。

spark2.0及之后的版本中只存在SortShuffleManager而将原来的HashShuffleManager废弃掉(在1.2版本之前的Shuffle方法);
2. hadoop的MapReduce以及shuffle过程,画图。怎么调优?
主要参考:[6]

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]

4. 哪些算子涉及到shuffle操作
sortByKey、groupByKey、reduceByKey、countByKey、join、cogroup等聚合操作。
到此这篇spark面试题目(spark面试题shuffle)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/19890.html