文章目录
- 四, Hadoop基础架构-YARN
- 一, Yarn-资源调度器
- 1.1 Yarn 基础架构(RM, NM, AM, Contaioner)
- 1.2 Yarn 工作流程详解(重要!)
- 1.4 Yarn调度器和调度算法
- 1.4.1 先进先出调度器(FIFO)
- 1.4.2 容量调度器(Capacity Scheduler)
- 1.4.2.1 容量调度器调度算法
- 1.4.3 公平调度器(Fair Scheduler)
- 1.4.3 公平调度器资源分配策略
- 二, Yarn 常用命令(待补充)
四, Hadoop基础架构-YARN
一, Yarn-资源调度器
- Yarn(Yet Another Resource Negotiator)是一个资源调度平台, 负责为运算程序提供服务器运算资源, 相当于一个分布式的操作系统平台, 而MapReduce等运算程序则相当于运行在这个操作系统上的应用程序.
1.1 Yarn 基础架构(RM, NM, AM, Contaioner)
- Yarn主要由 RM(resource manager), NM(node manager), AM(application master) 和 Container等组件构成
- Yarn各个组件的具体功能如下:
1.2 Yarn 工作流程详解(重要!)
在从作业提交到运行完成整个流程中, 我们可以把与Yarn相关的作业工作流程大致分为下面五个阶段
- 作业提交;
- 作业初始化;
- 任务分配;
- 任务运行;
- 作业完成;
- 作业提交阶段
一, Client通过job.waitForCompletion()向ResourceManager 提交Job, 在这期间会申请一个JobId;
二, RM收到请求后, 返回资源提交路径(hdfs或者file:/…/staging)和唯一JobId;
三, Client根据RM返回信息把(jar包, xml配置文件, 切片文件)资源上传到指定位置;
四, Client提交完资源后,向RM提交执行作业请求, RM收到请求后, 创建一个ApplcationManager(AM)来管理这个Job.
- 作业初始化阶段
五, 新创建的AM会把Job添加到ResourceScheduler(资源调度程序)中,在这个Rs中, 维护了一个队列,所有待执行的Job都会暂存到这个队列中, 并按照一定规则等待执行.
六, 当轮到某个Job执行时, RS会通知AM有空闲的NM可以用来执行Job了;
七, AM会调用RM分配给它的NM, 在其中开辟一个Container(封装了运行Job需要的资源), 并在Container中启动管理待执行JobApplicationMaster(AppMaster);
八, AM获取第一步中Client提交到HDFS上的文件, 根据切片信息生成Task, Task的种类可以是MapTask, 也可以是ReduceTask.
- 任务分配阶段
九, AppMaster向RM申请运行Task任务的资源.
十, RM将需要运行的Task分配给空闲的NM, NM分别领取任务, 并创建用于执行Task的Container.
- 任务运行阶段
十一, AM通知所有接收任务的NM启动计算;
十二, NM启动Task计算;
十三, 如果这批Task运行完毕后还有新的Task需要执行, 则向RM申请Container, 运行新的Task;
十四, 所有的Job执行完毕, AM向RM申请注销自己;
- 作业完成阶段
十五, YARN 中的任务将其进度和状态(包括 counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval 设置)向应用管理器请求进度更新, 展示给用户。
十六, 除了向应用管理器请求作业进度外, 客户端每 5 秒都会通过调用 waitForCompletion()来检查作业是否完成。时间间隔可以通过 mapreduce.client.completion.pollinterval 来设置。作业完成之后, 应用管理器和 Container 会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
1.4 Yarn调度器和调度算法
目前,Hadoop 作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)
。Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler。 CDH 框架默认调度器是 Fair Scheduler。
- 具体的设置项见, yarn-default.xml文件
1.4.1 先进先出调度器(FIFO)
- FIFO 调度器(First IN First Out): 单队列, 根据提交作业的先后顺序, 先来先服务.
优缺点:
优点: 简单易懂;
缺点:不支持多队列
, 生产环境很少使用.
1.4.2 容量调度器(Capacity Scheduler)
特点:
多队列
: 每个队列可配置一定的资源量, 每个队列采用FIFO调度策略;容量保证
: 管理员为每个队列设置资源最低保证和资源使用上限;灵活性
: 如果一个队列中的资源有剩余, 可以暂时共享给那些需要资源的队列, 而一旦该队列有新的应用程序提交, 则其他队列借调的资源会归还给该队列;多租户
: 支持多用户共享集群和多应用程序同时运行. 为了防止同意用户的作业独占队列中的资源, 该调度器会对同一用户提交的作业所占资源量进行限定.
1.4.2.1 容量调度器调度算法
1.4.3 公平调度器(Fair Scheduler)
[公平调度器-缺额]
1.4.3 公平调度器资源分配策略
二, Yarn 常用命令(待补充)