MapReduce两种主要的后台程序-jobtracker和tasktracker
2016年03月02日 23:01:37
阅读数:3026
一、Jobtracker
Jobtracker是主线程,它负责接收客户作业提交,调度任务到工作节点上运行,并提供诸如监控工作节点状态及任务进度等管理功能,一个MapReduce集群有一个jobtracker,一般运行在可靠的硬件上。
tasktracker是通过周期性的心跳来通知jobtracker其当前的健康状态,每一次心跳包含了可用的map和reduce任务数目、占用的数目以及运行中的任务详细信息。Jobtracker利用一个线程池来同时处理心跳和客户请求。
当一个任务被提交时,组成作业的每一个任务的信息都会存储在内存中,在任务运行的时候,这些任务会伴随着tasktracker的心跳而更新,因此能近乎实时的反映任务进度和健康状况。
二、Tasktracker
第二个后台程序—tasktracker—由jobtracker指派任务,实例化用户程序,在本地执行任务并周期性地向jobtracker汇报状态。在每一个工作节点上永远只会有一个tasktracker。Tasktracker和DataNode运行在一个机器上,从而使得每一台物理机器既是一个计算节点,同时也是一个存储节点。每一个tasktracker能够配置map和reduce的任务片数(taskslot),这个数字代表每一种任务能被并行执行的数目。