基于Tungsten Sort的Shuffle实现机制主要是借助Tungsten项目所做的优化来高效处理Shuffle。
Spark提供了配置属性,用于选择具体的Shuffle实现机制,但需要说明的是,虽然默认情况下,Spark默认开启的是基于Sort的Shuffle实现机制(对应spark.shuffle.manager的默认值),但实际上,参考Shuffle的框架内核部分可知,基于Sort的Shuffle实现机制与基于Tungsten Sort的Shuffle实现机制都是使用SortShuffleManager,而内部使用的具体实现机制是通过提供的两个方法进行判断的。对应非基于Tungsten Sort时,通过SortShuffleWrit-er.shouldBypassMergeSort方法判断是否需要回退到Hash风格的Shuffle实现机制,当该方法返回的条件不满足时,则通过SortShuffleManager.canUseSerializedShuffle方法判断是否需要采用基于Tungsten Sort的Shuffle实现机制,而在这两个方法的返回都为false,即都不满足对应的条件时,会自动采用常规意义上的基于Sort的Shuffle实现机制。(www.xing528.com)
因此,当设置了spark.shuffle.manager=tungsten-sort时,也不能保证就一定采用基于Tungsten Sort的Shuffle实现机制。有兴趣的读者可以参考Spark 1.5及之前的注册方法的实现,该实现中SortShuffleManager的注册方法仅构建了BaseShuffleHandle实例,同时对应的getWriter中也对应只构建了BaseShuffleHandle实例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。