与服务器一起的日子

  • mysql
  • linux
  • 高可用
  • nginx
与服务器一起的日子
冰冷的机器也熄不灭火热的心
  1. 首页
  2. yarn
  3. 正文

hadoop技术探秘02——什么是yarn

2017年11月28日 533点热度 0人点赞 0条评论

Apache Hadoop中的 YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器(yarn在hadoop2.x版本里面集成),它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。

YARN简介

YARN的基本思想是将资源管理和作业调度/监控的功能分解成单独的守护进程。 这个想法是有一个全局的资源管理器( RM )和每个应用程序的ApplicationMaster( AM )。 应用程序可以是单个作业,也可以是DAG作业。

ResourceManager和NodeManager组成数据计算框架。 ResourceManager是仲裁系统中所有应用程序之间资源的最终权威。 NodeManager是负责容器的每机器框架代理,监视它们的资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。

每个应用程序的ApplicationMaster实际上是一个特定于框架的库,并负责从ResourceManager协商资源,并与NodeManager一起工作来执行和监视这些任务。

yarn架构图

 

ResourceManager

ResourceManager和nodemanager是基于格式化数据的计算框架。ResourceManager是最大的权威(指挥者),负责调度分布式hadoop系统的所有应用程序和所有资源。nodemanager是这个框架里面的每台机器的代理监控容器,监测他们的资源(CPU、内存、磁盘、网络)并向ResourceManager 请求调度或者报告节点状态。

ApplicationMaster

每个应用都有负责的ApplicationMaster,实际上,这个特定的库和框架的任务是协商ResourceManager的资源调度,执行并监控nodemanager的任务(S)。
ApplicationMaster 管理一个在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在潜在的安全问题。YARN 假设 ApplicationMaster 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。
NodeManager 管理一个 YARN 集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。YARN 继续使用 HDFS 层。它的主要 NameNode 用于元数据服务,而 DataNode 用于分散在一个集群中的复制存储服务。
要使用一个 YARN 集群,首先需要来自包含一个应用程序的客户的请求。ResourceManager 协商一个容器的必要资源,启动一个 ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

 延伸

ResourceManager有两个主要组件:Scheduler和ApplicationsManager。

调度程序负责将资源分配给各种正在运行的应用程序,这些应用程序受到容量,队列等熟悉的约束。调度程序是纯调度程序,因为它不会监视或跟踪应用程序的状态。 此外,由于应用程序故障或硬件故障,它不提供有关重新启动失败任务的保证。 调度器根据应用程序的资源需求执行调度功能; 它是基于资源容器的抽象概念来实现的,它包含了内存,CPU,磁盘,网络等元素。

调度程序有一个可插拔的策略,负责在各种队列,应用程序等之间对集群资源进行分区。当前的调度程序,例如CapacityScheduler和FairScheduler。

ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并提供失败时重新启动ApplicationMaster容器的服务。 每个应用程序的ApplicationMaster负责从调度程序中协商适当的资源容器,跟踪他们的状态并监视进度。

hadoop-2.x中的MapReduce与以前的稳定版本(hadoop-1.x)保持了API兼容性 。 这意味着所有的MapReduce作业应该仍然在YARN之上运行,只需重新编译即可。

YARN通过ReservationSystem支持资源预留的概念, ReservationSystem允许用户指定一段时间和时间限制(例如截止日期)的资源配置文件,并保留资源以确保重要作业的可预测执行。ReservationSystem跟踪资源对预留执行准入控制,并动态地指示底层调度程序以确保预留满足。

为了将YARN扩展到几千个节点之外,YARN通过YARN Federation功能支持联邦的概念。 联邦允许透明地将多个YARN(子)群集在一起,并使它们看起来像一个单一的大型群集。 这可以用来实现更大的规模,和/或允许多个独立的群集一起用于非常大的工作,或者为所有人提供能力的租户。

标签: 暂无
最后更新:2017年11月28日

jhin

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 与服务器一起的日子. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang