Hadoop学习笔记--YARN


引言

YARN(Yet Another Resource Negotiator,另一种资源协调者)是Hadoop 2.0的资源管理和调度框架,其设计基本思想是“放权”。把MapReduce1.0中JobTracker三大功能拆分给新组件承担。其中ResourceManager负责资源管理,ApplicationMaster负责任务调度和任务监控,NodeManager负责汇报本节点的健康情况、资源使用情况、任务执行情况。


1.YARN的优势

1.1 可扩展性(Scalability)

YARN利用ResourceManager和ApplicationMaster分离的架构优点,可以扩展到近10000个节点和100000个任务另外,YARN Federation的联邦机制进一步增强了集群的水平横向扩展性。

1.2 可用性(Availability)

YARN的ResourceManager HA机制保证了YARN的高可用性,ResourceManager Restart特性保证了若ResourceManager发生单点故障时能尽快重启。

1.3 利用率(Utilization)

在YARN中,一个NodeManager管理一个资源池,且YARN中的资源是精细化管理,每一个应用程序都能够按需请求资源。

1.4 多租户(Multitenancy)

YARN向MapReduce以外的其他分布式计算框架开放了Hadoop,甚至可以在同一个YARN集群上运行不同版本的MapReduce。

2. YARN的体系架构

YARN体系架构
YARN采用主从架构(Master/Slave),其核心组件包括ResourceManager,NodeManager与ApplicationMaster三个。一个ResourceManager对应多个NodeManager,此外,YARN还引入了一个逻辑概念Container容器,各组件详细介绍如下:

2.1 Client

Client负责向ResourceManager提交任务。

2.2 ResourceManager

一个集群只有一个ResourceManager,负责集群资源的统一管理和调度,具体功能如下:
处理来自客户端的请求,包括启动/终止应用程序;
启动/监控ApplicationMaster。一旦出现故障,ResourceManager会在另一个节点上启动该ApplicationMaster;
监控NodeManager,接收其汇报的心跳信息并分配给NodeManager去执行。某个NodeManager出现故障时,标记并告诉ApplicationMaster如何处理。

2.3 NodeManager

一个集群有多个NodeManager,负责单节点资源的管理和使用,具体功能如下:
周期性的向ResourceManager汇报本节点上的资源使用情况和各Container的运行状态;
②接收并处理来自ApplicationMaster的Container启动/停止命令

2.4 ApplicationMaster

每个应用程序有一个ApplicationMaster,负责管理应用程序,具体功能如下:
①数据切分;
②为应用程序/作业向ResourceManager申请资源(Container),并分配给内部任务;
③与NodeManager通信,以启动/停止任务;
任务监控与容错,在任务执行失败时重新为其申请资源并重启任务;
⑤接收并处理ApplicationMaster发出的命令,如终止Container、重启NodeManager等。

2.5 Container

Container是一个逻辑概念,封装了某个节点上一定量的资源(CPU和内存两种资源)。

3.YARN的工作流程

YARN的工作流程
在YARN提交MapReduce程序时,完整步骤如下:
Client向YARN提交MapReduce应用程序。包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等;
②ResourceManager接收到请求后,为程序分配第一个Container并与对应的NodeManager通信,要求它在这个Container中启动该应用程序的ApplicationMaster;
③ApplicationMaster被创建后会首先向ResourceManager注册,从而用户可以直接通过ResourceManager查询程序状态;
ApplicationMaster采用轮询的方法通过RPC请求向ResourceManager申请资源
⑤ResourceManager以“容器Container”的形式向提出申请的ApplicationMaster分配资源。一旦分配资源,ApplicationMaster立即与对应的NodeManager通信,要求它启动任务;
⑥当ApplicationMaster要求容器启动时,它会为任务设置好运行环境,包括环境变量、JAR包、二进制程序等,然后将任务启动命令写到一个脚本中,最后NodeManager在容器中运行该脚本以启动任务
各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以便在任务运行失败的时候ApplicationMaster及时掌握并重启该任务。同时用户可以通过RPC向ResourceManager查询应用运行状态;
⑧应用程序运行完毕后,ApplicationMaster向ResourceManager的应用程序管理器ApplicationManager注销并关闭自己。若ApplicationMaster因故失败,ResourceManager能检测到并将其重新启动,直到所有的任务都执行完毕。

4.YARN的新特性

4.1 ResourceManager Restart的自动重启机制

为了降低ResourceManager发生单节点故障时集群作业执行失败,YARN提供了ResourceManager自动重启,保证ResourceManager能够尽快重启(用户感知不到)。

4.2 ResourceManager HA

为解决单点故障问题,Hadoop2.4.0增加了Active/Standby ResourceManager。
Active ResourceManager会将状态信息写入到Zookeeper集群中,若其发生故障,则切换Standby ResourceManager为Active ResourceManager。

4.3 YARN Federation的联邦机制

YARN Federation
基于联邦设计,通过联合多个YARN子集,可以将单个YARN集群扩展到数万个节点。
YARN Federation体系架构中各个组成部分如下:
① YARN Sub-cluster:子集群。可通过添加一个或多个子集群来扩展联合环境;
②Router:路由器。用户提交应用时首先会访问其中一个Router,然后Route会先从State Store中获得所有子集群信息(Active ResourceManager和其他一些使用率信息),之后根据配置的路由策略将应用程序提交请求转发给对应的ResourceManager上;
③AMRMProxy:应用程序和多个ResourceManager通信的桥梁;
④Global Policy Generator(GPG):全局策略生成器。其忽略整个联合,确保系统始终被正确配置和调整,关键设计是集群的可用性不依赖永远在线的GPG;
⑤Federation StateStore:为联合状态,它定义了需要维护的附加状态,以便将多个单独的子集群松散地耦合到单个大型联合集群中;
⑥Federation Policy Store:联合策略存储,包含如何将应用程序和资源请求路由到不同子集群的信息,如随机/散列/循环/优先级等;


总结

以上就是关于YARN的相关内容,简单介绍了一下YARN的优势、体系架构、工作流程和新特性!欢迎大家在评论区补充!

参考《Hadoop大数据原理与运用》徐鲁辉

猜你喜欢

转载自blog.csdn.net/weixin_49588575/article/details/129016352