Yarn 工作机制
![]()
- 客户端向 ResourceManager 申请运行程序
- ResourceManager 检查是否有运行权限,如果有就会返回 jobid 和程序提交的资源路径
- 客户端根据 ResourceManager 返回的信息,然后执行提交程序的资源到 /tmp/.../job_id目录下( 资源包括 jar 程序本身、job.split 逻辑切规划文件和 job.xml 配置文件)
- 客户端资源上传成功后,向 ResourceManager 请求执行程序
- ResourceManager 会将客户端请求转化为一个 Job 任务,并为该 Job 任务找到一个 NodeManger 启动容器(Container)用于运行 ApplicationMaster
- 启动中的 ApplicationMaster 向 ResourceManager 注册自己,启动成功后与 ResourceManager 保持心跳
- ApplicationManager 读取 tmp/..,/job_id/ 目录下 job.split 数据(申请资源的多少)并向 ResourceManager 申请与切片数量相应的容器(Container)
- ResourceManager 根据请求返回可用的 NodeManger 的容器(Container) 所在的位置
- 申请成功的容器(Container),由 ApplicationMaster 进行初始化。容器(Container)的启动信息初始化后,ApplicationManager 与对应的 NodeManager 通信,要求 NodeManager 启动容器
- ApplicationMaster 执行 NodeManger 上启动容器运行 MapTask 或 ReduceTask 任务
- 容器(Container)运行期间,ApplicationMaster 对 容器(Container)进行监控。容器(Container)通过 RPC 协议向对应的 ApplicationManager 汇报自己的进度和状态等信息
- MapTask 执行结束,ApplicationMaster 向 ResourceManager 汇报,回收资源
- ReduceTask 执行结束,ApplicationMaster 向 ResourceManager 汇报,回收资源
- 所有的任务结束后,ApplicationMaster 申请运用结束,注销自己,并允许属于它的容器(Container)被收回
posted @
2021-12-09 18:00
追こするれい的人
阅读(
57)
评论()
收藏
举报