Hadoop实践(一)---Hadoop核心组件之YARN

29 篇文章 6 订阅
23 篇文章 0 订阅

YARN(Yet Another Resource Negotiator)该框架已经不再是一个传统的MapReduce框架,甚至与MapReduce无关,是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。用户自己编写的框架作为客户端的一个lib,在运用提交作业时打包即可。

为啥要开发YARN?那么MR存在哪些缺点和不足?

经典 MapReduce 的最严重的限制主要关系到可伸缩性资源利用对与 MapReduce 不同的工作负载的支持。在 MapReduce 框架中,作业执行受两种类型的进程控制:

  • 一个称为 JobTracker 的主要进程,它协调在集群上运行的所有作业,分配要在 TaskTracker 上运行的 map 和reduce 任务。
  • 许多称为 TaskTracker 的下级进程,它们运行分配的任务并定期向 JobTracker 报告进度。

大型的 Hadoop 集群显现出了由单个 JobTracker 导致的可伸缩性瓶颈。

此外,较小和较大的 Hadoop 集群都从未最高效地使用他们的计算资源。在 Hadoop MapReduce中,每个从属节点上的计算资源由集群管理员分解为固定数量的 map 和 reduce slot,这些 slot 不可替代。设定 map slot 和 reduce slot 的数量后,节点在任何时刻都不能运行比 map slot 更多的 map 任务,即使没有 reduce任务在运行。这影响了集群的利用率,因为在所有 map slot 都被使用(而且我们还需要更多)时,我们无法使用任何 reduce slot,即使它们可用,反之亦然。

Hadoop 设计为仅运行 MapReduce 作业。随着替代性的编程模型(比如 Apache Giraph 所提供的图形处理)的到来,除 MapReduce 外,越来越需要为可通过高效的、公平的方式在同一个集群上运行并共享资源的其他编程模型提供支持。

原MapReduce框架的不足

  • JobTracker是集群事务的集中处理点,存在单点故障
  • JobTracker需要完成的任务太多,既要维护job的状态又要维护job的task的状态,造成过多的资源消耗
  • 在taskTracker端,用map/reduce task作为资源的表示过于简单,没有考虑到CPU、内存等资源情况,当把两个需要消耗大内存的task调度到一起,很容易出现OOM
  • 把资源强制划分为map/reduce slot,当只有map task时,reduce slot不能用;当只有reduce task时,map slot不能用,容易造成资源利用不足。

解决可伸缩性问题

在 Hadoop MapReduce 中,JobTracker 具有两种不同的职责:

  • 管理集群中的计算资源,这涉及到维护活动节点列表、可用和占用的 map 和 reduce slots 列表,以及依据所选的调度策略将可用slots 分配给合适的作业和任务
  • 协调在集群上运行的所有任务,这涉及到指导 TaskTracker 启动 map 和 reduce任务,监视任务的执行,重新启动失败的任务,推测性地运行缓慢的任务,计算作业计数器值的总和,等等

为单个进程安排大量职责会导致重大的可伸缩性问题,尤其是在较大的集群上,JobTracker 必须不断跟踪数千个TaskTracker、数百个作业,以及数万个 map 和 reduce 任务。相反,TaskTracker通常近运行十来个任务,这些任务由勤勉的 JobTracker 分配给它们。

为了解决可伸缩性问题,一个简单而又绝妙的想法应运而生:减少单个 JobTracker 的职责,将部分职责委派给 TaskTracker,因为集群中有许多 TaskTracker。在新设计中,这个概念通过将 JobTracker 的双重职责(集群资源管理和任务协调)分开为两种不同类型的进程来反映。

这样的设计使得系统有一个全局的资源管理器和以及每个程序有一个应用程序管理器(Application Master)

Application:不是job。在Hadoop2.X中,一个程序可以指传统概念上的一个单独的MR作业,也可以是一系列作业组成的有向无环图(DAG,Spark的作业处理方式)

DAG是一个由许多节点相连构成的图,图中没有循环。多个作业组成了DAG意味着这些作业之间存在这层属关系

经过重新设计的新框架可以使得整个Hadoop系统对其提供一支的原生支持。这使得关于安全和资源管理的系统级策略能以一致的方式应用,所有系统都能共享相同的底层HDFS。

YARN系统由以下几个部分组成:

  • 全局资源管理器(Global Resource Manager)
  • 节点管理器(Node Manager)
  • 针对每个应用程序的应用程序管理器(Application-specific Application Master)
  • 调度器(Scheduler)
  • 容器(Container)

一部分CPU和内存构成一个Container,一个Application运行在一组Container

Application Master的一个实例会像Global Resource Manager请求获取资源

Scheduler会通过Node Manager来分配资源(Container)

Node Manager会像Global Resource Manager汇报每个Container的使用情况

YARN 的优点

  1. 更快地MapReduce计算
  2. 对多框架支持
  3. 框架升级更容易

这里写图片描述

图中的client可以提交任何YARN支持的类型的程序

  • ResourceManager 代替集群管理器,它的核心是Scheduler(Hadoop自带计算能力调度器和公平调度器)当多个App竞争使用集群资源的时候,它负责分配调度,确保集群资源的优化合理使用。追踪活着的的NM和可用的资源,定位可用资源分配给app和task,并且监控App Master

  • ApplicationMaster 代替一个专用且短暂的 JobTracker,这是1.0和2.0的一个关键区别,调整所有任务在应用程序中的执行,请求适当的资源来运行任务,它通过和RM协商沟通资源,并通过NM获得这些资源,然后执行任务

App Master为YARN带来的的好处:
1、提高扩展性
2、框架更通用
3、带来的一个最大的好处就是,Hadoop系统现在不仅支持MR类型的计算,它并的插件化,如果系统要增加某种类型的计算框架,就开发一个对于的App Master,并把这个App Master以插件的形式整合到Hadoop系统中

  • NodeManager 代替 TaskTracker,它运行在集群中的一个节点上,集群中的每个节点都会运行一个自己的节点管理器。以容器的形式分配计算资源,管理在container中运行的进程,并像ResourceManager汇报资源使用情况

NodeManager的主要任务:
1、接受RM的请求,为作业分配Container
2、与RM交换信息,保证集群稳定运行
3、管理已启动的容器的生命周期
4、管理节点日志
5、运行各种YARN应用程序的辅助服务(auxiliary service,在yarn-site.xml中需要设置这个属性,一般为MR程序设置shuffle服务)
NM只对抽象出来的Container进行管理,而对单个APP一无所知,这部分是App Master负责的

  • Container是YARN框架中的计算单元,是一个任务进行工作的单元子系统。可以运行不同类型的任务,也可以运行App Master,每一个容器都有不同规模的内存和cpu【集群、节点和容器的关系:一个节点可以运行多个容器,但是一个容器只能运行在一个节点内】
  • 一个分布式应用程序代替一个 MapReduce 作业

一个Global Resource Manager主要以后台进程的形式运行,它通常在专用机器上运行,在各种竞争的应用程序之间仲裁可用的集群资源。

在用户提交一个应用程序时,一个称为 ApplicationMaster 的轻量型进程实例会启动来协调应用程序内的所有任务的执行。这包括监视任务重新启动失败的任务推测性地运行缓慢的任务,以及计算应用程序计数器值的总和。有趣的是,ApplicationMaster 可在容器内运行任何类型的任务。

NodeManager 是 TaskTracker 的一种更加普通和高效的版本。没有固定数量的 map 和 reduce slots,NodeManager 拥有许多动态创建的资源容器。

YARN请求的过程

当客户端像Hadoop2.x提交一份作业,YARN框架后台处理该请求的过程如下:

  1. client提交作业,就确定该应用程序的类型,那么App Master也就确定了
  2. RM协调资源,在一个node上获取一个用于运行App Master实例的Container
  3. App Master 在RM中注册,注册后client就能够像RM查询该App Master的详细信息,client与App Master通信
  4. 在这个操作过程中,App Master通过资源请求(请求容器所在的节点,容器的配资—内存和cpu)与RM协商
  5. 在启动的容器中运行的应用程序会通过该应用程序特定的协议向App Master汇报它的执行进度
  6. 通过应用程序特定的协议,client和App Master通信(client通过步骤3在RM中找到注册的App Master)
  7. 当应用程序执行完毕,App Master就会从RM中取消注册,作业占用的Container会被释放会系统中

这里写图片描述

YARN中的内存分配:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hadoop YARN (Yet Another Resource Negotiator) 是一个基于Hadoop的集群资源管理系统。Hadoop YARN Client是Hadoop YARN中的一部分,它是用来与YARN ResourceManager通信的客户端工具。 Hadoop YARN Client的主要功能是向YARN ResourceManager提交应用程序并获取集群的资源来执行这些应用程序。当一个应用程序需要在Hadoop集群上运行时,开发人员可以使用Hadoop YARN Client来编写和提交应用程序,然后该客户端将应用程序的相关信息发送给YARN ResourceManager。这些应用程序可以是MapReduce程序,也可以是其他类型的应用程序,例如Spark、Flink等。 使用Hadoop YARN Client,开发人员可以指定应用程序所需的计算资源和内存等配置参数。此外,Hadoop YARN Client还可以跟踪应用程序的状态,并显示有关应用程序执行进度和状态的相关信息。如果发生错误或异常,开发人员可以使用Hadoop YARN Client来取消或终止应用程序的执行。 Hadoop YARN Client利用YARN ResourceManager的资源调度功能,将应用程序提交给ResourceManager后,ResourceManager将根据集群的资源情况来分配相应的资源给该应用程序。此外,Hadoop YARN Client还可以与NodeManager通信,以获取有关执行任务的节点的信息,并监视应用程序的进度。 总的来说,Hadoop YARN Client提供了一个方便的方式来提交和管理应用程序的执行,并与YARN ResourceManager和NodeManager进行通信,以获取资源和监视应用程序的状态。通过使用Hadoop YARN Client,开发人员可以更容易地在Hadoop集群上运行和管理各种类型的应用程序。 ### 回答2: Hadoop YARN客户端是Hadoop生态系统中的一个关键组件,用于与YARN资源管理器进行通信,并提交、监控和管理MapReduce作业或其他分布式计算任务。YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,负责集群资源的分配和任务的调度。 Hadoop YARN客户端的主要功能包括作业的提交和监控。当用户想要运行一个MapReduce作业时,他们可以使用YARN客户端来提交该作业。YARN客户端将作业的执行所需要的资源需求和其他相关信息发送给YARN资源管理器。资源管理器根据集群中可用的资源和调度策略来分配资源,并将作业的任务分配给相应的节点上的容器来执行。 同时,YARN客户端还可以监控作业的执行进度和状态。用户可以通过YARN客户端查询和获取作业的相关信息,如已完成的任务数、失败的任务数、运行时间等。这些信息对于实时监控作业的运行状况以及进行作业调优非常有帮助。 此外,YARN客户端还可以用于管理作业的生命周期。用户可以使用YARN客户端来杀死正在运行的作业或取消已提交但未开始执行的作业。这对于当用户不再需要某个作业时或出现意外情况需要中断作业时非常有用。 总之,Hadoop YARN客户端是Hadoop生态系统中负责与YARN资源管理器通信的关键组件。它提供了作业的提交、监控和管理的功能,帮助用户实现高效的分布式计算任务。 ### 回答3: Hadoop-YARN-Client是Hadoop生态系统中的一个组件,它是Hadoop资源管理器(YARN)的客户端库。YARNHadoop的第二代资源管理系统,它的目的是为集群中的各个工作负载提供资源调度和管理服务。 Hadoop-YARN-Client的作用是允许用户通过编程方式与YARN交互,以便向集群提交应用程序,并监控和管理它们的执行。通过Hadoop-YARN-Client,用户可以以编程方式与YARN的应用程序客户端接口(API)进行交互,完成下列任务: 1. 提交应用程序:用户可以使用Hadoop-YARN-Client将一个应用程序提交给YARN。提交应用程序时,需要指定应用程序的类型、优先级、所需资源等信息,并将应用程序的代码和依赖项打包成一个本地或分布式的Jar文件。 2. 监控应用程序:一旦应用程序被提交到YARN,用户可以使用Hadoop-YARN-Client监控应用程序的执行情况。用户可以查询应用程序的状态、进度和资源使用情况等信息。 3. 管理应用程序:用户可以使用Hadoop-YARN-Client管理应用程序的执行。例如,用户可以请求YARN增加或减少分配给应用程序的资源,或者终止应用程序的执行。 总之,Hadoop-YARN-Client是Hadoop生态系统中与YARN交互的关键组件之一。它为用户提供了一种便捷的方式来提交、监控和管理在YARN上执行的应用程序,让用户能够更好地利用集群资源和进行任务调度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值