上一篇中,我们了解了MapReduce的执行过程,今天我们来看一下MapReduce的实现架构
MapReduceV1
MapReduce采用 Master/Slave 架构,在hadoop1.x版本中,由全局唯一的 JobTracker(主)和多个 TaskTacker(从)组成。
JobTracker
JobTracker负责资源和任务的调度。
JobTracker会对集群中所有的TaskTracker与job进行监控,当有新的作业进入到集群中时,JobTracker中的调度器(scheduler)会根据资源的使用情况合理的分配这些作业。一旦TaskTracker挂掉,scheduler会将原来在这个TaskTracker上面执行的任务转移到其他的节点上面继续执行。
TaskTracker
TaskTracker 接收JobTracker 发送过来的命令并执行相应的操作,同时会周期性地向JobTracker发送“心跳”,汇报本节点上资源的使用情况和任务的运行进度。
执行流程
首先,客户端将MapRedecu应用程序打成jar包发送给JobTracker,请求执行该程序
JT拿到jar包后,向NameNode去请求MR应用程序所要计算的文件位置
JT拿到文件位置列表后,向有数据的TaskTracker节点发送消息,让其分配资源用于运行Map Task
该节点优先是DataNode节点