请描述 Hadoop 中 JobTracker 和 TaskTracker 各自承担的职责,以及它们之间的交互方式。
考察说明
考查对 Hadoop 1.x 核心组件 JobTracker 与 TaskTracker 角色和协作机制的理解。
回答思路
- 【回答框架 1】JobTracker 是 Hadoop 1.x 的 master 节点,负责接收用户提交的作业,进行作业调度、资源管理和任务分配。它维护作业的整体状态,并将作业拆分为多个 Map 和 Reduce 任务。
- 【回答框架 2】TaskTracker 是 slave 节点,运行在数据节点上,负责执行 JobTracker 分配的 task,并周期性地通过心跳向 JobTracker 汇报任务执行状态和资源使用情况。
- 【回答框架 3】交互流程是:客户端提交作业到 JobTracker,JobTracker 根据数据本地性和集群资源,将任务分派给合适的 TaskTracker;TaskTracker 启动 JVM 运行任务,并通过心跳反馈进度,JobTracker 据此进行容错和重试。
- 【关键点 1】JobTracker 负责调度与资源管理,是单一 master;TaskTracker 负责任务执行,是 slave。
- 【关键点 2】TaskTracker 通过心跳向 JobTracker 通信,实现状态同步与故障检测。
- 【关键点 3】数据本地性(移动计算而非数据)是任务分配的重要原则。
- 【易错点 1】不能将 JobTracker 等同于 YARN 中的 ResourceManager,后者负责资源管理但不直接调度作业,职责分离。
- 【易错点 2】避免说 JobTracker 直接执行任务,实际只负责任务分配与监控。
- 【易错点 3】注意说明此模型在 Hadoop 2.x 中被 YARN 取代,原因是单点故障和扩展性瓶颈。