(3)CapacityTaskScheduler类
核心成员变量:
TaskSchedulingMgr mapScheduler = new MapSchedulingMgr(this);
Map任务的调度器
TaskSchedulingMgr reduceScheduler = new ReduceSchedulingMgr(this);
Reduce任务的调度器
MemoryMatcher memoryMatcher = new MemoryMatcher(this);
用与内存匹配
JobQueuesManager jobQueuesManager;
队列管理
CapacitySchedulerConf schedConf;
CapacityScheduler 的配置信息类
CapacityTaskScheduler 类实现了TaskScheduler类,实现核心方法为:
refresh()
start()
这是Mapreduce调度器的入口,在JobTracker的开始位置就是调用此方法,函数offerService()中有一句:
taskScheduler.start();
taskScheduler是通过反射完成实例化:
// Create the scheduler
Class<? extends TaskScheduler>schedulerClass
=conf.getClass("mapred.jobtracker.taskScheduler",
JobQueueTaskScheduler.class, TaskScheduler.class);
taskScheduler = (TaskScheduler)
ReflectionUtils.newInstance(schedulerClass, conf);
回到正题,start()的主要任务是:初始化配置信息,初始化队列,添加作业监听器(JobQueueManager)。
terminate()
终止调度器