Spark | Shuffle 的写操作机制

基于哈希的Shuffle写操作(<V1.1): Spark在该机制中每一个Mapper会根据Reduce数量创建出相应的Bucket,即bucket=MapTaskNum*ReduceTaskNum。Mapper生成的结果会根据设置的Partition算法填充到每个Bucket中,Bucket可以抽象理解为一个文件,当Reduce启动时会根据任务的编号和所依赖的Mapper的编号从源端或者本地取得相应的Bucket作为Reduce任务的输入进行处理。

缺点每个ShuffleMapTask都会为后续任务创作一个单独的文件,而当M*R任务量较大情况下会导致写文件数量大和缓存开销大问题。

 

基于排序的Shuffle写操作(>Spark1.2):  Spark在为避免HashShuffle过程中产生过多文件和缓存开销问题而引入该机制。SortShuffle机制中每个ShuffleMapTask不会为后续的每个任务创建单独的文件,而是会将所有的结果写到同一个文件中,对应的生成一个索引Index文件进行索引。

 

更多实例参照网友学习:

https://www.cnblogs.com/itboys/p/9226479.html

https://www.jianshu.com/p/3f98c20f5cf0

https://blog.csdn.net/weixin_35602748/article/details/78724440

https://blog.csdn.net/weixin_35602748/article/details/78724638

 

666~~ 

 

发布了44 篇原创文章 · 获赞 11 · 访问量 5450

猜你喜欢

转载自blog.csdn.net/Sampson_Hugo/article/details/103386370
今日推荐