一.什么是shuffle
MapOutputTrancker用于跟踪map任务的输出状态,此状态便于reduce任务定位到map输出结果所在的节点地址,进而获取中间输出结果,每个map任务或者reduce任务,都会有其唯一的标识,分别为mapid和reduceid,每个reduce任务的输入可能是多个map任务的输出,因为reduce可能会到多个map任务所在的节点上去拉取Block,这一过程叫做shuffle,每次shuffle的过程都有其唯一的标识shuffleid.
二.MapOutputTrancker的创建方式
在Driver端和Executor端启动的同时,都会创建MapOutputTrancker的实例,不同的是Driver端创建的是MapOutputTranckerMaster,Executor端创建的是MapOutputTranckerWoker。
Driver端启动时会创建MapOutputTranckerMaster,之后创建MapOutputTranckerMasterEndpoint,并且注册到Dispatcher中,端点名称为MapOutputTrancker。
Executor端创建MapOutputTranckerWorker,不仅会和Driver端一样,注册端点信息等,而且会从远端Driver获取之前在NettyRpcEnv的Dispatcher中注册好的MapOutputTranckerMasterEndpoint的引用。
三.MapOutputTrancker的属性
- trackerEndpoint:持有Driver端上MapOutputTranckerMasterEndpoint的