7.7 小结

本章从TaskTracker架构、TasTracker行为、作业目录管理等几个方面深入分析了TaskTracker工作原理及其实现。

TaskTracker以服务的形式存在,通过心跳机制向JobTracker汇报任务运行状态,并索取来自JobTracker的各种命令。

TaskTracker收到的命令包括启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、杀死作业(KillJobAction)和重新初始化(TaskTrackerReinitAction)五种。TaskTracker收到这些命令后,会按照要求执行相应的操作。

TaskTracker最重要的功能之一是启动新任务。一个任务的启动过程大体包括两步:作业本地化和任务启动。为了进行资源隔离,TaskTracker为每个任务启动独立的Java虚拟机。此外,TaskTracker启动了一个额外的内存监控进程以防止任务滥用内存资源。

总体上说,TaskTracker扮演着“通信枢纽”的角色,是JobTracker与Task之间的“沟通桥梁”。

至此,我们已经剖析了JobTracker和TaskTracker两个重要服务的实现。接下来,我们将介绍Task实现,包括Map Task和Reduce Task两种Task的内部实现细节。