在Hadoop MRv1中,JobTracker的资源管理与作业控制功能高度耦合,这种设计导致资源分配僵化、无法动态调整。以下是具体原因和表现:
1. 功能耦合的体现
JobTracker同时承担以下两大核心职责:
- 资源管理:管理集群中所有节点的计算资源(如CPU、内存),并将其划分为固定的Map Slot和Reduce Slot。
- 作业控制:负责作业的调度、任务分配、状态监控、失败重试等。
耦合示例:
当一个MapReduce作业提交后,JobTracker需要:
- 分配资源:根据预设的Slot数量(例如每个节点2个Map Slot、2个 Reduce Slot),静态划分资源。
- 调度任务:将Map任务分配到空闲的Map Slot,Reduce任务分配到Reduce Slot。
- 监控状态:持续接收TaskTracker的心跳,处理任务失败或超时。
2. 资源无法动态调整的直接原因
(1) 静态Slot划分
- 资源分配僵化:
Map Sl