Yarn是什么:Yarn 是一个资源管理和任务调度工具
资源管理:管理集群的资源的分配
资源(Container):运行程序所需要的硬件环境
RAM(内存)
CPU(中央处理器)
NET(网络)
HDD(硬盘)
任务调度:安排任务的执行顺序
执行任务,监控进度
Yarn 中的组件:
ResourceManager
运行在 Master 节点的进程
接收客户端请求
负责资源的分配
负责任务的调度
NodeManager
运行在 Slave 节点的进程
管理和使用自身的资源(container)
通过心跳向 ResourceManager 汇报自身信息
ApplicationMaster
管理分析程序的生命周期和资源需求
Container
为运行程序而分配的资源(硬件环境)
Yarn 的任务调度方式:
FIFO(先进先出)
采用队列的方式将一个一个任务按照时间先后顺序执行
Capacity(Hadoop 2.7.7 默认)
可以设置多个队列,并设置每个队列的资源占比
Fari(公平)
多个任务平分集群资源
Yarn的执行流程
1、client 向 ResourceManager 申请执行分析程序;
2、ResourceManager 找到一个空闲的 Container 启动 ApplicationMaster;
3、ApplicationMaster 在 ResourceManager 注册;
4、ApplicationMaster 向 ResourceManager 申请空闲的 Container;
5、ApplicationMaster 通知 NodeManager 启动容器;
6、NodeManager 为程序设置好运行环境,在容器中执行程序代码;
7、client 联系 ResourceManager,ResourceManager 联系 ApplicationMaster 监控程序的运行状态;
8、程序运行完毕后,ApplicationMaster 向 ResouorceManager 申请注销;