介绍
Yarn是一个 资源调度平台,负责为 MapReduce程序 提供 服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。
架构
YARN是主从架构,有三大组件:
ResourceManager(RM)NodeManager(NM)ApplicationMaster(AM)
其他:
Container
注意:
- client 可以有多个
- 集群可以运行多个 ApplicationMaster
- 每个
NodeManager上可以有多个Container
ResourceManager(RM)
进程,是集群中的主角色。
整个集群资源的管理者,管理内存、CPU等。
接收客户端提交的作业,通过 NM 分配、管理 各个机器 上的计算资源
NodeManager(NM)
进程,是集群中的从角色
每台PC服务器上都要部署一个
计算资源的管理者
根据 RM 指令,启动 Container 容器,监视容器的资源使用情况
向 RM 汇报 资源使用情况
ApplicationMaster(AM)
单个任务运行的管理者,应用程序内的 老大
向 RM 申请资源( Container )
与 NM 通信,启动 map task
等所有 map task 运行完毕后,向 RM 申请资源( Container ),运行 reduce task
监督程序的执行情况
实现类: MrAppMaster
Container
容器,资源的抽象,相当于 VMware 虚拟机,封装了任务运行所需要的资源,如:内存(占用 1G-8G)、CPU、磁盘、网络等。执行结束后,可自动释放资源
关键交互流程
- 客户端提交任务给
ResourceManager ApplicationMaster向ResourceManager申请 内存、CPU 资源- mapreduce作业状态汇报:
Container(map task、reduce task)向Container(ApplicationMaster),汇报进度,是否完成、错误等 - 节点状态汇报:
NodeManager向ResourceManager汇报进度
