Hadoop-Yarn介绍

3 篇文章 0 订阅
Yarn的架构设计

这里写图片描述

  • ResourceManager (RM)
    负责对各NM上的资源进行统一管理和调度。
    将AM分配空闲的Container运行并监控其运行状态。
    对AM申请的资源请求分配相应的空闲Container。
    主要由两个组件构成: 调度器和应用程序管理器。
  • 调度器 (Scheduler)
    调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
    调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位是Container,从而限定每个任务使用的资源量。
    Shceduler不负责监控或者跟踪应用程序的状态,也不负责任务因为各种原因而需要的重启(由ApplicationMaster负责)。
    总之,调度器根据应用程序的资源要求,以及集群机器的资源情况,为应用程序分配封装在Container中的资源。
    调度器是可插拔的,例如CapacityScheduler、FairScheduler。
  • 应用程序管理器 (Applications Manager)
    应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动AM、监控AM运行状态并在失败时重新启动等,跟踪分给的Container的进度、状态也是其职责。
  • NodeManager (NM)
    NM是每个节点上的资源和任务管理器。
    它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;同时会接收并处理来自AM的Container 启动/停止等请求。
  • ApplicationMaster (AM)
    用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,重启失败任务等。
    ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。
    MapReduce就是原生支持的一种框架,可以在YARN上运行Mapreduce作业。有很多分布式应用都开发了对应的应用程序框架,用于在YARN上运行任务,例如Spark,Storm等。如果需要,我们也可以自己写一个符合规范的YARN Application。
  • Container
    是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container 表示的。 YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源。
Mapreduce-1 架构设计

这里写图片描述

  • Client: 客户端
  • JobTracker : 主要负责 资源监控管理和作业调度。
    • a.监控所有TaskTracker 与job的健康状况,一旦发现失败,就将相应的任务转移到其他节点;
    • b.同时JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度
      器会在资源出现空闲时,选择合适的任务使用这些资源.
  • TaskTracker: :是JobTracker与Task之前的桥梁
    • a.从JobTracker接收并执行各种命令:运行任务、提交任务、Kill任务、重新初始化任务;
    • b.周期性地通过心跳机制,将节点健康情况和资源使用情况、各个任务的进度和状态等汇报给
  • JobTracker.
    Task Scheduler: 任务调度器(默认 FIFO,先按照作业的优先级高低,再按照到达时间的先后选择被执
    行的作业)
  • Map Task: 映射任务
  • Reduce Task: 归约任务
Yarn工作流程(mr作业提交流程)

这里写图片描述

  • 1:用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
  • 2:ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
  • 3:ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
  • 4:ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
  • 5:一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
  • 6:NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
  • 7:各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
  • 8:应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
  • 总结:
    当用户向 YARN 中提交一个应用程序后, YARN 将分两个阶段运行该应用程序:
    • a. 第一个阶段是启动ApplicationMaster;
    • b. 第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直
      到运行完成。
Yarn常用命令
  • yarn application –list
    查看当前yarn应用程序的状态
  • yarn application –kill -applicationId {application ID}
    杀死当前yarn的工作进程
Yarn调优参数
【YARN中内存资源的调度和隔离】
  • yarn.nodemanager.resource.memory-mb
    NM节点的物理内存量,以MB为单位,可以分配给容器。如果设置为-1并且yarn.nodemanager.resource.detect-hardware-capabilities为true,则会自动计算(在Windows和Linux的情况下)。在其他情况下,默认值是8192MB。注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。

  • yarn.scheduler.minimum-allocation-mb
    单个任务可申请的最少物理内存量,以MB为单位。 默认为1024MB。
    比这更低的内存请求会抛出一个InvalidResourceRequestException异常。
    如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。

  • yarn.scheduler.maximum-allocation-mb
    单个任务可申请的最多物理内存量,默认是8192(MB)。
    比这更高的内存请求会抛出一个InvalidResourceRequestException异常。

  • yarn.scheduler.increment-allocation-mb (CDH平台)
    内存增量,默认是2048MB。

  • yarn.nodemanager.pmem-check-enabled
    是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

  • yarn.nodemanager.vmem-check-enabled
    是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

  • yarn.nodemanager.vmem-pmem-ratio
    在为容器设置内存限制时,虚拟内存与物理内存之间的比率。
    容器分配用物理内存来表示,而虚拟内存的使用率则可以超过这个比例。
    任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1。

【YARN中CPU资源的调度和隔离】
  • yarn.nodemanager.resource.cpu-vcores
    表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数
    数目相同。
    如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物
    理CPU总数。
    如果设置为-1,并且yarn.nodemanager.resource.detect-hardware-capabilities为true,则在Windows和Linux的情况下自动根据硬件确定。

  • yarn.scheduler.minimum-allocation-vcores
    单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。

  • yarn.scheduler.maximum-allocation-vcores
    单个任务可申请的最多虚拟CPU个数,默认是32。
    设置:[4,32]


若泽数据: www.ruozedata.com
交流群: 707635769


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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)的客户端库。YARN是Hadoop的第二代资源管理系统,它的目的是为集群中的各个工作负载提供资源调度和管理服务。 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上执行的应用程序,让用户能够更好地利用集群资源和进行任务调度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值