一、Yarn简介
1、yarn是什么
- 一种新的Hadoop资源管理器,一个通用资源管理系统
为上层提供统一的资源管理与任务调度及监控,提高了集群管理效率、资源使用率、数据共享效率
2、yarn特点
资源管理和资源调度解耦的框架,提高资源利用率
- 运维成本下降,只需要运维一个集群,同时满足多种业务需求
- 集群内数据共享一致
-
二、Yarn架构设计
核心思想是将JobTracker的两个主要职责:资源分配和任务调度交给两个角色。
一个是ResourceManager,一个是每一个应用中唯一的ApplicationMaster
1、各模块的主要功能
Client:作为用户编程的接口与ResourceManager进行交互。
- ResourceManager:整个集群只有一个存活的,负责整个集群的资源分配和任务调度。处理来自客户端的请求,监控ApplicationMatser,监控NodeManager并接收心跳检测。
- NodeManager:集群有多个,负责单个节点的资源管理和使用。处理来自ApplicationManager的命令,处理来自ResourceManager的命令,周期性的向ResourceManager汇报资源使用情况。
- ApplicationMaster:每个应用程序特有的,负责应用程序的管理。数据切分,为作业向ResourcesManager申请资源,与NodeManager通信,任务监控,处理来自ResourceManager的命令。
- Container:对任务运行环境的抽象。
2、运行流程
三、yarn调度策略
1、MRv1的调度方式
集中调度,扩展性差。
容易发生单点故障。
不支持新的调度策略。2、Yarn双层调度架构
将传统的集中调度器一分为二:
资源管理(ResourceManager)、任务调度(ApplicationMaster)3、常用调度策略
- FIFO(先进先出)默认的队列内部调度器,只有一个队列,所有用户共享。缺点:大的任务可能会占用所有资源。导致队列被阻塞。
- CS(容器调度器)每个用户会分配专用的资源,不支持抢占式,队列内部默认使用FIFO。
- FS(公平调度器)为所有用户分配公平的资源。
四、Yarn shall命令
- 直接输入yarn即可查看所有一级命令。
- yarn version 查看版本信息。
- yarn jar 提交jar包。
- yarn classpath 获取yarn运行时的classppath。
- yarn application -list 获取所有正在运行的application列表。
- yarn application kill app-id 杀死指定的application。
-
五、Yarn特征说明
1、统一的资源管理与任务调度框架
2、双层调度框架
3、容错性的实现
同时启动多个ResourceManager,但是只有一个是active的。
- ApplicationMaster挂掉后,由ResourceManager负责重启。其中会保存已经完成的task,重启后无需再次执行。
- 通过心跳把信息反馈给AM,或者心跳超时被AM感知,由AM通过重试恢复Task。