MapReduce 1.x 架构
MapReduce 1.x 采用 Master/Slave 架构,由全局唯一的 Jobtracker 和多个 TaskTacker 组成,并且在Client中提供一系列的api供编程和管理使用。其中各个组件的作用是:
1. JobTracker
全局唯一,主要负责集群资源监控和作业调度。JobTracker会对集群中所有的TaskTracker进行监控,一旦TaskTracker出现宕机、失败等情况,JobTracker中的调度器会将原来在这个TaskTracker上面执行的任务转移到其他的节点上面继续执行。当有新的作业进入到集群中时,调度器会根据资源的使用情况合理的分配这些作业。并且JobTracker中的调度器是可以插拔的,这意味着用户可以根据自己的需要,自定义作业和集群的调度方法。但是JobTracker存在单点故障的问题,一旦JobTracker所在的机器宕机,那么集群就无法正常工作。这也是 MapReduce 2.x 所要解决的主要问题之一。
2. TaskTracker
TaskTracker使用 “slot” 对本节点的资源(cpu、内存、磁盘等)进行划分,负责具体的作业执行工作。TaskTracker需要周期性向JobTracker汇报本节点的心跳信息,包括自身运行情况、作业执行情况等,JobTracker中的调度器会根据心跳信息对其分配“slot”,TaskTracker获得slot之后,就开始执行相应的工作。其中 slot 有两种&#