详细分为以下几个步骤:
(1)先由客户端向 Resource Manager 提交任务的执行请求(提交任务);
(2)Resource Manager 内部有两个小组件,一个是 Application Manager,一个是 Resource Schedule;Application Manager 负责接收任务请求,当它接收到任务之后,会在某一个 NodeManager 开一个 Container,相当于开了一片资源。在Container 里面会启动一个进程,这个进程叫 App Master。App Master 负责整个任务的执行。这时候相当于这个任务立项了,即相当于这个任务有人来主导了。
(3)App Master 向 Resource Manager 中的 Application Manager 进行注册。
(4)App Master 向 Resource Manager 中的 Resource Schedule 申请资源(内存 / CPU)。这里是双向的,即 Resource Schedule 会为 App Master 返回一个 Container 列表。这个Container 列表会告诉 App Master 哪一台机器有资源。
(5)App Master 根据 Container 资源列表分别向对应的 NodeManager 申请资源。
(6)申请资源之后,在这些主机中启动 Map Task 和 Reduce Task,进行任务执行。
(7)Map Task 和 Reduce Task 任务在执行过程中,需要向 App Master 通知任务的执行情况。
(8)App Master 向 Resource Manager 中的 Application Manager 汇报任务最终的执行情况。
简而言之:
客户端提交任务,Resource Manager 接收任务,会启动一个 App Master 进程,负责整个任务的执行。App Master 向 Resource Manager 注册之后申请资源,就会在从节点 Node Manager 去执行任务,任务执行完之后向 Resource Manager 去汇报。