MapReduce任务调度和资源管理
MapReduce任务调度和资源管理
MapReduce任务调度和资源管理主要的目的是解决如何去选择一个合适的节点去执行 Task
。一个集群里有很多台机器,每台机器都拥有各自的资源,如剩余内存量,核数,网络带宽,磁盘容量等。资源管理者必须要知道这些节点的可用资源才能对任务进行合理分配调度,那么MapReduce是如何进行任务调度的呢?这就涉及到MapReduce的任务调度模型了。
在MapReduec任务调度模型中,主要包含以下几个角色:
- JobClient:接收客户端提交的程序jar包,并进行一系列的操作,具体会在下面进行详细分析。
- JobTracker:负责接收
JobTracker
分配的作业,将Task
分配到各个节点上去运行,并提供诸如监控工作节点状态及任务进度等管理功能,一个MapReduce集群只有一个jobtracker
。 - TaskTracker:负责监控任务的执行情况,并通过心跳连接周期性地向
jobtracker
汇报任务进度,资源使用量等。每台执行任务的节点都会有一个TaskTracker
,其使用“slot”等量划分本节点上的资源量。“slot”代表计算资源(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,sl