Hadoop学习笔记:关于YARN

Apache Yarn :Hadoop集群资源管理系统


运行机制

提供请求使用集群资源的API,但很少直接用于用户代码;用户代码中使用的大多是分布式计算框架提供的更高层API,这些API建立在Yarn之上,且向用户隐藏了资源管理细节。

Yarn 通过两类长期运行的守护进程提供自己的核心服务:管理集群上资源使用的资源管理器(resource manager)、运行在集群中所有节点上且能够启动和监控容器(container)的节点管理器(node manager)。

容器是用来执行特定应用程序的进程,每个容器都有资源限制(内存、CPU等),一个容器可以是一个Unix进程,也可以是Linux cgroup,取决于YARN的配置。

Yarn本身不会为应用的各部分(客户端、master和进程)彼此间通信提供任何手段。

Yarn是一个灵活的资源请求模型,在请求多个容器是可以指定每个容器需要的计算资源数量(内存、CPU等)。
也可采用动态的方式请求需要的更多资源。
Spark在集群上启动固定数量的执行器:MapReduce最开始申请map任务容器,然后申请reduce任务容器;如果任何任务出现失败,会另外申请容器以执行失败的任务。

SparkTez适合运行一个作业的有向无环图;
SparkSamzaStorm适合流处理;
Apache Slider使在Yarn上运行现有的分布式应用成为可能;
Apache Twill与Slider类似,但是额外提供了一个简单的编程模型,用于开发Yarn上的分布式应用。


YARN 与 MapReduce 1 相比

新旧版本的 MapReduce API 之间的区别不同于 MapReduce 1 执行框架与 MapReduce 2 执行框架的区别。
API 具有面向用户的、客户端的特性,并决定着用户怎样写 MapReduce 程序;
执行机制只是 MapReduce 程序的不同途径而已。

MapReduce 1 中有两类守护进程控制着作业的执行过程:一个 jobtracker 及一个或多个 tasktracker
jobtracker 通过调度 tasktracker 上运行的任务来协调所有运行在系统上的作业。
tasktracker 在运行任务的同时会将运行报告发送给 jobtracker。

MapReduce 1 中,jobtracker 同时负责作业调度任务进度监控
YARN 中由不同的实体担负,为资源管理器application master(每个 MapReduce 作业一个)。

jobtracker 负责存储已完成的作业历史。
YARN 中是时间轴服务器(timeline server)。

MapReduce 1YARN
Jobtracker资源管理器、application master、时间轴服务器
Tasktracker结点管理器
Slot容器
可扩展性(Scalability)

YARN 可以在更大规模的集群上运行。
Mapreduce 1 瓶颈来源于 jobtracker 必须同时管理作业和任务
YARN 采用资源管理器与 application master 分离的方式克服了这一局限。
YARN 中一个应用的每一个实例都对应一个专门的 application master。

高可用性(Availability)

当守护进程失败时,通过另一个守护进程复制接管工作所需的状态以便其继续提供服务,从而可以获得高可用性(HA,High availability)。
jobtracker 内存中大量快速变化的复杂状态使其获得高可用性非常困难。
YARN 中 jobtracker 被划分为资源管理器和 application master 之间进行了责任划分,高可用随之变成了分治问题;
实际上,Hadoop 2 对资源管理器和 application master 都支持高可用性。

利用率(Utilization)

MapReduce 1 中,每个 tasktracker 都配有若干固定长度的 slot,静态分配,分为 map slot 和 reduce slot,一个 map slot 只能运行一个 map 任务,reduce slot 也一样。
YARN 中,一个结点管理器管理一个资源池,而不是指定固定数目的 slot。
YARN 不会出现集群中仅有 map slot 可用导致 reduce 任务必须等待的情况,MapReduce 1 会出现。

多租户(Multitenancy)

在某种程度上,YARN最大的优点是向 MapReduce 以外的其他类型的分布式应用开放了 Hadoop。
用户甚至可以在一个 YARN 集群上运行不同版本的 MapReduce。


YARN 中的调度

YARN 中有三种调度器可用:

  1. FIFO 调度器(FIFO Scheduler):将运用放到一个队列中,按顺序运行。
  2. 容量调度器(Capacity Scheduler):多个队列,队列内使用 FIFO,单个队列使用的资源不会超过队列容量,可以设置弹性队列,多任务时可以超过最大容量。
  3. 公平调度器(Fair Scheduler):在作业之间动态平衡资源,资源在用户之间实现了公平共享。

延迟调度:YARN 调度器试图以本地请求为重,但是当应用请求本地结点时,结点被占用,此时不去立刻请求同一机架的人容器,而是等待一小段时间(几秒),可以增加在此结点上分配到容器的机会,进而提高集群效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值