MapReduce的体系结构
MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task
Client:客户端,用于提交作业
JobTracker:作业跟踪器,负责作业调度,作业执行,作业失败后恢复
TaskScheduler:任务调度器,负责任务调度
TaskTracker:任务跟踪器,负责任务管理(启动任务,杀死任务等)
1)Client-提交作业,查看作业状态
提交作业:用户编写的MapReduce程序通过Client提交到JobTracker端
查看作业状态:用户可通过Client提供的一些接口查看作业运行状态
2)JobTracker-资源监控、作业调度
JobTracker负责资源监控和作业调度
资源监控:JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现节点失效(通信失败或节点故障),就将相应的任务转移到其他节点
作业调度:JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而任务调度器会选择合适的(比较空闲)节点资源来执行任务
3)TaskScheduler-任务调度器
4)TaskTracker-任务管理
TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器(TaskScheduler)的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用
5)Task
Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动