YARN简介
什么是YARN
- Yet Another Resource Negotiator,另一种资源调度器
- 通用资源管理系统
- 为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
YARN产生背景
- 通用资源管理系统
- Hadoop数据分布式存储(数据分块,冗余存储)
- 当多个MapReduce任务要用到相同的hdfs数据,需要进行资源调度管理
- Hadoop1.x时并没有YARN,MapReduce既负责进行计算左右又要处理服务器集群资源调度管理
- 服务器集群资源调度管理和MapReduce执行过程耦合在一起带来的问题
- Hadoop早期,技术只有Hadoop,这个问题不明显
- 随着大数据技术的发展,Spark、Storm····计算框架都要用到服务器集群资源
- 如果没有通用资源管理系统,只能为多个集群分别提供数据
- 不同计算框架可以共享同一个HDFS集群上的数据,享受整体资源调度
YARN的架构和执行流程
ResourceManager(RM)
- RM资源管理器;
- 整个集群同时提供服务的RM只有一个,负责集群资源的统一管理和调度;
- 处理客户端的请求;
- 监控NM,一旦某个NM挂了,那么改NM上运行的任务需要我们来告诉AM来如何进行处理
NodeManager(NM)
- NM节点管理器
- 整个集群中有多个,负责自己节点资源管理和使用
- 定时向RM汇报本节点的资源使用情况
- 接收并处理来自RM的命令:启动Container
- 处理来自AM的命令
ApplicationMaster(AM)
- 每一个应用程序对应一个:MR,Spark
- 负责应用程序的管理
- 为应用程序向RM申请资源(core、memory),分配给内部的task
- 需要与NM通讯:启动/停止task
- Task和AM都是运行在Container中的
Container
- 容器:封装了CPU、Memory等资源的一个容器,是一个任务运行环境的抽象
Client
- 提交作业
- 查询作业进度
- 杀死作业
- Client提交作业请求
- RedourceManager进程和NodeManager进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将ApplicationManager分发到这个容器上面
- 启动Container中的ApplicationMaster
- ApplicationMaster启动后向ResourceManager注册进程,申请资源
- ApplicationMaster申请到资源后,向对应的NodeManager申请启动Container,将要执行的程序分发到NodeManager上
- Container启动后执行对应的任务
- Task执行完毕之后,向ApplicationMaster返回结果
- ApplicationMaster向ResourceManager请求kill
YARN环境搭建
- mapred-site.xml
1 | <property> |
- yarn-site.xml
1 | <property> |
- 启动YARN相关进程sbin/start-yarn.sh
- http://ip:8088验证
- 停止YARN相关进程sbin/stop-yarn.sh
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com