本质思想是将jobtracker资源管理和作业调度分为两个进程。
hadoop1.0
1.客户端向jobtracker发送作业请求
2.jobtracker返回给客户端一个作业id及资源提交路径(包括运行作业需要的jar包,xml文件,及作业分片信息)
3.客户端将资源提交到HDFS指定目录,并将作业提交给jobtracker
4.jobtracker将作业添加到队列,从hdfs获取分片信息,创建task执行列表
5.jobtracker与tasktracker及namenode保持心跳通信,根据tasktracker的资源情况及数据的位置给tasktracker分配任务
6.tasktracker从hdfs获取执行任务需要的资源执行任务,结果汇总提交给jobtracker,jobtracker再返回结果给客户端
1.0 jobtracker既要接收客户端提交的作业,又要对任务进行分配,又要管理tasktracker的资源情况,任务太多易单点故障。
yarn工作机制
1.客户端向ResourceManager提交job,ResourceManager中的ApplicationManager负责接收job请求,返回给客户端一个作业id和资源提交路径
2.ResourceManager的ResourceScheduler找到一个NodeManager创建Container,在Container中启动一个ApplicationMaster,负责任务的调度
3.ApplicationMaster将作业拆分为task,若作业较小,直接在ApplicationMaster当前Container中执行
4.若资源不够,向ResourceManager中的ResourceScheduler申请容器,ResourceScheduler通过心跳返回给ApplicationMaster容器信息
5.ApplicationMaste和容器对应的NodeManager通信,NodeManager创建Container,ApplicationMaster将任务分配给NodeManager
6.NodeManager从hdfs上获取执行任务需要的资源,执行任务,并与ApplicationMaster保持心跳,汇报任务执行情况
7.任务执行完毕,ApplicationMaster向ResourceManager注销