`
huangyongxing310
  • 浏览: 490743 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

YARN 原理分析

    博客分类:
  • YARN
 
阅读更多
YARN

YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。







ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。


YARN总体上仍然是master/slave结构,在整个资源管理框架中,resourcemanager为master,nodemanager是slave。
Resourcemanager负责对各个nademanger上资源进行统一管理和调度。

当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。

由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。

YARN的基本组成结构,YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。

ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等;
NodeManager是Slave上一个独立运行的进程,负责上报节点的状态;
App Master和Container是运行在Slave上的组件,Container是yarn中分配资源的一个单位,包涵内存、CPU等等资源,yarn以Container为单位分配资源。

Client向ResourceManager提交的每一个应用程序都必须有一个Application Master,它经过ResourceManager分配资源后,运行于某一个Slave节点的Container中,具体做事情的Task,同样也运行与某一个Slave节点的Container中。RM,NM,AM乃至普通的Container之间的通信,都是用RPC机制。



RM是一个全局的资源管理器,集群只有一个,负责整个系统的资源管理和分配,包括处理客户端请求、启动/监控APP master、监控nodemanager、资源的分配与调度。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。

调度器
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。需要注意的是,该调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。

调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。

此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler等。


应用程序管理器
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。



ApplicationMaster(AM)
管理YARN内运行的应用程序的每个实例。
功能:
数据切分
为应用程序申请资源并进一步分配给内部任务。
任务监控与容错
负责协调来自resourcemanager的资源,并通过nodemanager监视容易的执行和资源使用情况。

每个框架可以写自己的ApplicationMaster代码来完成各自框架的任务(如:hadoop、spark等)

NodeManager(NM)
Nodemanager整个集群有多个,负责每个节点上的资源和使用。
功能:
单个节点上的资源管理和任务。
处理来自于resourcemanager的命令。
处理来自域app master的命令。
Nodemanager管理着抽象容器,这些抽象容器代表着一些特定程序使用针对每个节点的资源。
Nodemanager定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态(cpu和内存等资源)


Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
目前为止,YARN仅支持CPU和内存两种资源,且使用了轻量级资源隔离机制Cgroups进行资源隔离。
功能:
对task环境的抽象
描述一系列信息
任务运行资源的集合(cpu、内存、io等)
任务运行环境

目前只是做到了JVM内存的独立控制,(也就是说这只是表示一个数量,至于可以运行几个JVM是由物理机的性能来决定的)


Yarn的内存管理:
yarn允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上内存会被若干个服务贡享,比如一部分给了yarn,一部分给了hdfs,一部分给了hbase等,yarn配置的只是自己可用的

Yarn cpu管理:
目前cpu被划分为虚拟cpu,这里的虚拟cpu是yarn自己引入的概念,初衷是考虑到不同节点cpu性能可能不同,每个cpu具有计算能力也是不一样的,比如,某个物理cpu计算能力可能是另外一个物理cpu的2倍,这时候,你可以通过为第一个物理cpu多配置几个虚拟cpu弥补这种差异。用户提交作业时,可以指定每个任务需要的虚拟cpu个数。


总结:
就是管理每个节点中的的CPU和内存数量(不是物理机上的CPU和内存,是你配置给yarn应用能管理的CPU和内存数量)


https://www.cnblogs.com/wcwen1990/p/6737985.html


Yarn的运行原理(执行流程)
1.client向yarn提交job,首先找ResourceManager分配资源,
2.ResourceManager开启一个Container,在Container中运行一个Application manager
3.Application manager找一台nodemanager启动Application master,计算任务所需的计算
4.Application master向Application manager(Yarn)申请运行任务所需的资源
5.Resource scheduler将资源封装发给Application master
6.Application master将获取到的资源分配给各个nodemanager
7.各个nodemanager得到任务和资源开始执行map task
8.map task执行结束后,开始执行reduce task
9.map task和 reduce task将执行结果反馈给Application master
10.Application master将任务执行的结果反馈pplication manager。



YARN的工作流程可以分为以下几个步骤:
  1.用户向YARN提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等;
  2.ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在整个Container中启动应用程序的ApplicationMaster;
  3ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7;
  4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源;
  5.一旦ApplicationMaster申请到资源后,则与对应的NodeManager通信,要求其启动任务;
  6.NodeManager为任务设置好运行环境(包括环境变量、jar包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务;
  7.各个任务通过某RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
    在应用程序运行过程中,用户可以随时通过RPC向ApplicationMaster查询应用程序的当前运行状态;
  8.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。


https://blog.csdn.net/qq_39532946/article/details/76223705
https://blog.csdn.net/u011331430/article/details/79042329
https://www.cnblogs.com/admln/p/hadoop2-work-excute-yarn.html




  • 大小: 147.3 KB
  • 大小: 68.9 KB
分享到:
评论

相关推荐

    深入解析YARN架构设计与实现原理

    学习hadoop原理的必备工具书。hadoop v1存在诸多弊端,v2进行大幅改进。本书进行详细分析。

    Hadoop技术内幕深入解析YARN架构设计与实现原理.董西成

    《Hadoop技术内幕深入解析YARN架构设计与实现原理》是由董西成撰写的一本专著,主要聚焦于Hadoop生态系统中的YARN(Yet Another Resource Negotiator)框架。这本书详细阐述了YARN的架构设计原则、核心组件以及其...

    hadoop和yarn原理笔记.docx

    本篇笔记将深入探讨Hadoop和YARN的基本原理以及它们在大数据处理中的作用。 首先,大数据的特点可以用4V来概括:大量(Volume)、高速(Velocity)、多样(Variety)和低价值密度(Value)。由于数据量巨大,传统的...

    Hadoop的yarn详解

    通过本书的学习,读者可以全面掌握Hadoop YARN的架构设计和实现原理,不仅理解各个组件的功能和工作方式,还能深入到源代码层面,从而在实际工作中更加高效地部署和优化YARN集群。此外,本书还通过对比分析了不同...

    董西城-Hadoop技术内幕-深入理解YARN架构设计与实现原理----带完整书签--完整版共394页

    7. **实战与案例分析**:可能包含实际部署YARN集群的步骤,以及解决常见问题的策略。 通过阅读这本书,读者不仅可以了解YARN的基本工作原理,还能掌握如何优化YARN配置以适应不同业务场景,提升大数据处理效率。...

    Yarn获取Application列表编码

    本文对 Yarn 获取 Application 列表编码进行了详细的分析和介绍,包括其实现原理、代码实现、优点和应用场景。使用 Yarn 获取 Application 列表编码可以实时监控和管理 Hadoop 集群中的应用程序,从而提高大数据处理...

    YARN学习书籍及注解

    通过深入学习"YARN学习书籍及注解",读者可以全面了解YARN的工作原理,掌握如何配置和管理YARN集群,以及如何针对特定应用场景进行优化,这对于从事大数据处理和分析的工程师来说是非常宝贵的技能。

    YARN Essentials.PDF

    ### YARN Essentials 知识点概述 #### 一、YARN 的必要性 **YARN (Yet Another Resource Negotiator)** 是 ...无论是对于 Hadoop 的新手还是经验丰富的数据工程师而言,深入理解 YARN 的工作原理都是非常必要的。

    Flink on Yarn_K8S原理剖析及实践.pdf

    在YARN上运行Flink作业时,Flink的任务管理者(TaskManager)会在YARN的节点上启动,并与Flink的作业管理者(JobManager)协同工作,通过YARN的调度器进行资源的申请和任务的调度执行。 Kubernetes是目前最流行的...

    hadoop技术内幕:深入解析yarn架构设计与实现原理.epub

    《hadoop技术内幕:深入解析yarn架构设计与实现原理》是“hadoop技术内幕”系列的第3本书,前面两本分别对common、hdfs和mapreduce进行了深入分析和讲解,赢得了极好的口碑,hadoop领域几乎人手一册,本书则对yarn...

    基于Yarn的淘宝海量数据服务平台

    《基于Yarn的淘宝海量数据服务平台》是一篇深入探讨如何利用Apache Yarn构建高效、可扩展的数据处理平台的文章。在大数据领域,Yarn(Yet...对于从事大数据工作的工程师来说,理解和掌握Yarn的原理与实践是至关重要的。

    【讲义-第10期Spark公益大讲堂】Spark on Yarn-.pdf

    ### 三、Spark on Yarn的工作原理 #### Spark on Yarn的工作流程 当Spark应用提交至YARN集群时,会经历以下步骤: 1. **提交应用程序**:用户通过`spark-submit`命令将Spark应用程序提交给YARN。 2. **启动...

    基于Spark_on_Yarn的淘宝数据挖掘平台.pdf

    下面是Spark_on_Yarn的基本原理和框架结构: - **YARN(Yet Another Resource Negotiator)**:Yarn是Hadoop的一个子项目,主要负责集群资源管理和任务调度。它提供了一个通用的资源管理框架,允许不同的应用程序在...

    Hadoop技术内幕:深入解析YARN架构设计与实现原理1

    这些系统的比较分析有助于读者更全面地理解分布式资源管理的多样性和复杂性,并能洞察YARN未来可能的发展趋势。 附录部分提供了实用的参考资料,如YARN的安装指南、配置参数以及Hadoop Shell命令,为读者实际操作和...

    Hadoop运行原理分析pdf

    《Hadoop运行原理分析》是深入理解大数据处理框架Hadoop的核心读物,它详细解析了Hadoop如何在大规模数据集上高效运行。本文件主要涵盖了以下几个关键知识点: 1. **Hadoop概述**:Hadoop是Apache软件基金会开发的...

    Hadoop技术内幕:深入解析YARN架构设计与实现原理

    内容上,不仅涉及YARN应用角度的编程和设计,还深入到源代码层面的分析,覆盖了YARN的设计理念、基本架构和组件实现原理。此外,本书还涵盖了YARN上流行的各种计算框架以及相关的开源资源管理系统,为读者提供了一个...

    Yarn资源调度系统教程

    【Yarn资源调度系统教程】 YARN(Yet Another Resource Negotiator),是Apache Hadoop项目中的一个核心组件,主要负责管理大数据处理平台上的计算...理解并掌握YARN的原理和操作,对于进行大数据处理和分析至关重要。

    华为大数据认证:MapReduce分布式离线批处理和Yarn资源协调.pptx

    MapReduce和YARN是大数据...了解MapReduce和YARN的原理与功能,对于进行大数据处理和优化,以及通过华为大数据认证至关重要。掌握这些知识,可以有效提升大数据平台的效率和可靠性,满足企业对大数据分析和处理的需求。

Global site tag (gtag.js) - Google Analytics