第一步: 客户端向 ResourceManager 提交自己的应用。
第二步: ResourceManager 向 NodeManager 发出指令,为该应用启动第一个 Container ,并在其中启动 ApplicationMaster。
第三步: ApplicationMaster 向 ResourceManager 注册。
第四步: ApplicationMaster 采用轮询的方式向 ResourceManager 的 YARN Scheduler 申请资源。
第五步: 当 ApplicationMaster 申请到资源后(其实是获取空闲节点的信息),便会与对应的 NodeManager 通信, 请求启动计算任务。
第六步: NodeManager 根据资源量的大小、所需的运行环境,在 Container中启动任务。
第七步: 各个任务向 ApplicationMaster 汇报自己的状态和进度,以便 ApplicationMaster 掌握各个任务的执行状况。
第八步: 应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。
参考了《Hadoop海量数据处理 技术详解与项目实战(第2版)》