第221讲:Spark Shuffle Pluggable框架ShuffleManager解析
你要做shuffle,最核心的是ShuffleManager!
ShuffleManager:接口级别的,用于shuffle 洗牌系统的可插拔接口。基于spark.shuffle.manager的配置,在sparkenv创建shufflemanager,运行在driver和每一个executor上。driver进行shuffle注册,涉及shuffle id,maptask的数量等,executors(或运行在driver中的任务)可以读取和写入数据。 sparkenv实例化时候,其构造函数可以将sparkconf和isDriver 作为参数。
1,最最核心的是registerShuffle这个方法:注册一个ShuffleManager,并把句柄传递给executor的shufflemaptask去使用。def registerShuffle[K, V, C](
shuffleId: Int,
numMaps: Int,
dependency: ShuffleDependency[K, V, C]): ShuffleHandle
在spark 1.6.x中 包括 HashShuffleManager、SortShuffleManager;而在spark 2.0.x中已没有HashShuffleManager
val shortShuffleMgrNames = Map(
"sort" -> classOf[org.apache.spar