前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop 之 Yarn

Hadoop 之 Yarn

作者头像
搬砖俱乐部
发布2019-10-24 11:20:14
6340
发布2019-10-24 11:20:14
举报
文章被收录于专栏:BanzClubBanzClub

Yarn 全称 Yet Another Resource Negitiator,就是另一种资源调度器,主要负责Hadoop集群内任务的资源调度框架。

01

Yarn组件

Yarn的任务的运行,都是在一个容器(Container)内进行的,这个容器是任务运行时所需资源的抽象,包括内存、CPU等,也是Yarn进行资源分配、释放的基本单位。

MapReduce 的任务,会分成 Map 任务和 Reduce 任务,在集群里面就是 Map TaskReduce Task,这些任务会运行在 Container 上面的。

ResourceManager

整个集群只有一个ResourceManager,是Master,负责整个集群资源的调度,包括调度器和应用管理器两个组件:

调度器:当 Client 提交的任务时,根据所需要的资源以及当前集群的资源状况进行分配,这里资源分配的单位就是Container;

应用管理器:负责监控集群中任务的运行情况,主要通过节点对任务执行情况的上报。

NodeManager

集群里面包含多个NodeManager,是ResourceManager的Slave,负责节点上容器整个生命周期的管理,包括:处理ResourceManager资源分配请求,为任务分配容器;

通过监控容器状态,包括CPU、内存、磁盘、网络等,并且将这些信息向 ResourceManager 进行上报,以便ResourceManager了解各个节点的状态,以便进行其他任务的调度;

ApplicationMaster

每当 Client 提交一个任务时,就会创建一个 ApplicationMaster,作为这个任务整体执行情况的监控者和资源的协调者;

ApplicationMaster 与 Map Task 和 Reduce Task 一样,都运行在某个 NodeManager 的容器上;

ApplicationMaster 与 ResourceManager 会在任务运行整个过程中进行交互,包括资源的申请、释放;

02

Yarn运行原理

Yarn 的运行原理,也就是整个任务的生命周期,包括:任务的提交、初始化、分配、执行,执行状态、完成。

1、客户端将任务提交到 ResourceManager;

2、ResourceManager 负责协调创建 ApplicationMaster,在集群中某个 NodeManager 上分配容器,启动 ApplicationMaster;

3、ApplicationMaster 与 ResourceManager 进行交互,为任务要执行的 Task 申请资源,获得资源后,与对应的 NodeManager 进行交互,启动对应的 Task;

4、执行过程中,NodeManager 将 ResourceManager 上报节点的状态:内存、CPU、磁盘等;ApplicationMaster 也统计各个 Task 执行情况,也对 ResourceManager 进行上报任务信息;

5、任务执行中,会有相应的 Task执行完毕,这时,需要ApplicationMaster根据 Task完成状态,向ResourceManager 进行资源的释放,以便 ResourceManager 为后续 Task 分配资源;

6、所有任务执行完成,ApplicationMaster 向 ResourceManager 注销,整个应用运行结束。

03

Yarn调度器

Hadoop 集群是整体的、共用的资源,允许多个任务同时在集群内运行,当集群特别繁忙的时候,提交的任务可能要等待一段时间才能得到相应的资源。这时,Yarn 需要根据不同的集群任务场景,来设置不同的执行策略,也就是配置不同的调度器。目前,包括以下三种:

FIFO Scheduler

所有提交的任务排成一个队列,按照先进先出方式,依次进行资源的分配;

Capacity Scheduler

将整个集群划分成不同的组织,每个组织可以获得集群的一部分计算能力,为不同的组织分配专门的队列,每个组织内部的调度策略是采用先进先出的方式。

可以设置每个组织的最大容量,设置了最大容量的话,当已为组织分配的资源不够用时,可以扩展到最大容量,没有设置最大容量,将有可能使用整个集群的最大容量。

在提交任务时,可以通过configuration指定使用哪个组织运行该任务。

我们可以将不同的组织作为不同的用途使用,比如设置一个组织只负责运行小任务,避免由于集群运行大任务,而导致小任务不能得到适当的执行。

Fair Scheduler

Fair调度器是会动态调整系统资源,如果向集群提交一个大任务,如果集群只有这一个任务的话,这个大任务将会获得集群全部资源,当集群收到第二个任务时,集群会释放一部分第一个任务的资源供第二个任务申请使用,所有Fair调度器在任务提交和执行过程中,会有一段时间延迟;

Fair调度器允许向Capacity调度器设置不同分组,分组内部仍然是按照公平调取器原则进行资源分配;

Fair调度器支持抢占,也就是支持抢占那些占有资源超过其公平共享份额的容器,使容器资源释放后,可以分配给资源份额低于应得份额的队列。


1、https://www.jianshu.com/p/f50e85bdb9ce

2、《Hadoop权威指南》

3、http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BanzClub 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档