设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

初步掌握Yarn的架构及原理

2019-7-26 18:09 发布者: y553649552 评论 0 查看 1092
YARN 产生配景 MapReduce存在的题目: JobTracker 单点故障。 JobTracker 遭受的访问压力大,影响体系的扩展性。 不支持MapReduce之外的盘算框架,比如Storm、Spark、Flink 什么是YARN YARN 是Hadoop2.0版本新

YARN 产生配景

MapReduce存在的题目:

  • JobTracker 单点故障。
  • JobTracker 遭受的访问压力大,影响体系的扩展性。
  • 不支持MapReduce之外的盘算框架,比如Storm、Spark、Flink

什么是YARN

YARN 是Hadoop2.0版本新引入的资源管理体系,直接从MR1演化而来。 焦颔首脑:将MR1中JobTracker的资源管理和作业调理两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。此中,ResourceManager:负责整个集群的资源管理和调理。ApplicationMaster:负责应用步调相干的变乱,比如使命调理、使命监控和容错等。

YARN的出现,使得多个盘算框架运行在一个集群当中。

  • 每个应用步调对应一个ApplicationMaster。
  • 现在可以支持多种盘算框架运行在YARN上面,比如MapReduce、Storm、Spark、Flink

YARN的根本架构

从 YARN 的架构图来看,它紧张由ResourceManager、NodeManager、ApplicationMaster和Container等以下几个组件构成。

ResourceManager(RM)

RM 是一个全局的资源管理器,负责整个体系的资源管理和分配。它紧张由两个组件构成: 调理器(Scheduler)和应用步调管理器(Applications Manager,ASM)。

YARN 分层布局的本质是 ResourceManager。这个实体控制整个集群并管理应用步调向底子盘算资源的分配。ResourceManager 将各个资源部门(盘算、内存、带宽等)经心安排给底子 NodeManager(YARN 的每节点署理)。ResourceManager 还与 ApplicationMaster 一起分配资源,与 NodeManager 一起启动和监督它们的底子应用步调。在此上下文中,ApplicationMaster 负担了从前的 TaskTracker 的一些脚色,ResourceManager 负担了 JobTracker 的脚色。

  • 调理器:调理器根据容量、队列等限定条件(如每个队列分配肯定的资源,最多实行肯定命量的作业等),将体系中的资源分配给各个正在运行的应用步调。 该调理器是一个“纯调理器”,它不再从事任何与具体应用步调相干的工作。
  •  应用步调管理器:应用步调管理器负责管理整个体系中全部应用步调,包罗应用步调提交、与调理器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。

ApplicationMaster(AM)

ApplicationMaster 管理一个在 YARN 内运行的应用步调的每个实例。ApplicationMaster 负责和谐来自 ResourceManager 的资源,并通过 NodeManager 监督容器的实行和资源使用(CPU、内存等的资源分配)。请注意,只管现在的资源更加传统(CPU 焦点、内存),但将来会带来基于手头使命的新资源范例(比如图形处置惩罚单位或专用处置惩罚装备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在埋伏的安全题目。YARN 假设 ApplicationMaster 存在错误大概以致是恶意的,因此将它们当作无特权的代码对待。

ApplicationMaster 管理一个在 YARN 内运行的应用步调的每个实例,ApplicationMaster 负责和谐来自 ResourceManager 的资源,并通过 NodeManager 监督容器的实行和资源使用(CPU、内存等 的资源分配)。

NodeManager(NM)

NodeManager 管理一个 YARN 集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监督资源和跟踪节点康健。MRv1 通过插槽管理 Map 和 Reduce 使命的实行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用步调使用的针对每个节点的资源。YARN 继承使用 HDFS 层。它的紧张 NameNode 用于元数据服务,而 DataNode 用于分散在一个集群中的复制存储服务。

NM是每个节点上的资源和使命管理器,一方面,它会定时地向RM报告本节点上的资源使用情况和各个Container的运行状态;另一方面,它吸收并处置惩罚来自AM的Container启动/克制等各种哀求。

Container

Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container体现的。YARN会为每个使命分配一个Container,且该使命只能使用该Container中形貌的资源。

要使用一个 YARN 集群,起首必要来自包罗一个应用步调的客户的哀求。ResourceManager 协商一个容器的须要资源,启动一个 ApplicationMaster 来体现已提交的应用步调。通过使用一个资源哀求协议,ApplicationMaster 协商每个节点上供应用步调使用的资源容器。实行应用步调时,ApplicationMaster 监督容器直到完成。当应用步调完成时,ApplicationMaster 从 ResourceManager 注销其容器,实行周期就完成了。

通过上面的学习,应该明白的一点是,旧的 Hadoop 架构受到了 JobTracker 的高度束缚,JobTracker 负责整个集群的资源管理和作业调理。新的 YARN 架构突破了这种模子,允许一个新 ResourceManager 管理跨应用步调的资源使用,ApplicationMaster 负责管理作业的实行。这一更改消除了一处瓶颈,还改善了将 Hadoop 集群扩展到比从前大得多的设置的本事。别的,差别于传统的 MapReduce,YARN 允许使用 Message Passing Interface 等标准通讯模式,同时实行各种差别的编程模子,包罗图形处置惩罚、迭代式处置惩罚、呆板学习和一样寻常集群盘算。

YARN 的工作原理

MapReduce On YARN

MapReduce On YARN

1)YARN 负责资源管理和调理。

2)ApplicationMaster负责使命管理。

MapReduce ApplicationMaster

1)MRAppMaster

2)每个MapReduce作业启动一个MRAppMaster

3)MRAppMaster负责使命切分、使命调理、使命监控和容错等。

MRAppMaster使命调理

1)YARN 将资源分配给MRAppMaster

2)MRAppMaster 进一步将资源分配给内部使命

MRAppMaster容错

1)MRAppMaster运行失败后,由YARN重新启动

2)使命运行失败后,MRAppMaster重新申请资源

YARN HA

ResourceManager HA 由一对Active,Standby结点构成,通过RMStateStore存储内部数据和紧张应用的数据及标记。现在支持的可更换的RMStateStore实现有:基于内存的MemoryRMStateStore,基于文件体系的FileSystemRMStateStore,及基于zookeeper的ZKRMStateStore。 ResourceManager HA的架构模式同NameNode HA的架构模式根本同等,数据共享由RMStateStore,而ZKFC成为 ResourceManager进程的一个服务,非独立存在。



路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:分布式架构的架构稳定性下一篇:AIOps产品与架构浅析

相关阅读

一周热门

头条攻略!

日排行榜

相关分类