client 端向 ResourceManager 提交应用程序, 也就是 client 端会将 jar 包, 参数等数据上传到 hdfs 上的某路径下;
resourceManager 将此应用程序添加到任务队列中;
等待资源充沛时, resourceManager 为该应用程序分配第一个 container, 在这个 container 中启动应用程序的 ApplicationMaster;
ApplicationMaster 首先向 ResourceManager 注册, 用户可以直接通过 ResourceManager 查看应用程序的运行状态, 还会进行分片等工作, 之后向 ResourceManager 申请运行任务所需的资源;
ApplicationMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源, 发送命令让 NodeManager 创建 container, 之后执行 task;
ApplicationMaster 监控 job 执行作业, 必要时候进行容错处理, 直到 ApplicationMaster 检测到 job 完成后, 向 ResourceManager 通知, 注销自己
来源: http://www.bubuko.com/infodetail-3331729.html