03 Yarn 原理介绍

Yarn 原理介绍

大纲:

Hadoop 架构介绍

YARN 产生的背景

YARN 基础架构及原理

Hadoop的1.X架构的介绍

在1.x中的NameNodes只可能有一个,虽然可以通过SecondaryNameNode与NameNode进行数据同步备份,但是总会存在一定的时延,如果NameNode挂掉,但是如果有部份数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题。

包含两层:

Namespace

l 包含目录、文件以及块的信息

l 支持对Namespace相关文件系统的操作,如增加、删除、修改以及文件和目录的展示

Block Storage Service包含两部份

l 块管理(在Namenode中实现的)

提供数据节点群集成员的登记,并定期通过心跳进行检查。

提供块报告以及块的存储位置的维护

提供对块的操作,如对块进行增删改的操作及获取块的存储地址

对块的复本的的复制以及存储位置的管理

l 存储 - 提供Datanode进行数据的本地存储,并提供读写的操作

弊端:

1.扩展性差

2.可靠性差

3.资源利用率低

4.无法支持多种计算框架

Hadoop的2.X架构的介绍

在2.X中,HDFS的变化,主要体现在增强了NameNode的水平扩展及可用性,可以同时部署多个NameNode,这些NameNodes之间是相互独立,也就是说他们不需要相互协调,DataNode同时在所有NameNodes注册,做为他们共有的存储节点,并向定时向所有的这些NameNodes发送心跳块使用情况的报告,并处理所有NameNodes向其发送的指令。

存储块池(Block Pool)

一个存储块池是由一组存储块组成,它属于一个单独的Namespace(Namenode),集群中所有存储块池的存储块都是存放在Datanodes中的。每个存储块池与其它的存储块池都是独立管理的,因而其在为新的块生成Block IDs时,就不需要与其它Namespace(Namenode)中的存储块池进行协作,即使一个Namespace(Namenode)挂掉了,也不会使得Datanodes中的块被访问不到,因为其它Namespace(Namenode)中的存储块池也存放了Datanodes中所有存储块的信息。

一个命名空间(Namespace)和它的块池一起被称为命名空间向量。它是一个自包含的管理单元。当一个Namenode/namespace被删除,存储于Datanodes中的相应的存储块池也会被删除掉,在集群的更新过程中,每个命名空间向量都是以一个整体进行升级的。

集群ID(ClusterID)

集群ID的加入,是用于确认集群中所有的节点,也可以在格式化其它Namenodes时指定集群ID,并使其加入到某个集群中。

YARN的基础构架

YARN 是一种Hadoop资源管理器,它是一个通用资源管理系统,可谓上层应用提供统一的资源广利和调度,它的引入为几圈在利用率、资源统一管理和数据共享等方面带来了巨大的好处

应用场景

通用的统一的资源管理系统:

1.长应用程序

2.短应用程序

Yarn的优点

大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。

在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。

对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。

老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。

Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。

YARN的核心思想

将JobTracker和TaskTacker进行分离,它由下面几大构成组件:

a. 一个全局的资源管理器 ResourceManager

b.ResourceManager的每个节点代理 NodeManager

c. 表示每个应用的 ApplicationMaster

d. 每一个ApplicationMaster拥有多个Container在NodeManager上运行

ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。

调度器 调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。需要注意的是,该调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler等。

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

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM,主要功能包括:

与RM调度器协商以获取资源(用Container表示);

将得到的任务进一步分配给内部的任务(资源的二次分配);

与NM通信以启动/停止任务;

监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

当前YARN自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributedshell,它可以申请一定数目的Container以并行运行一个Shell命令或者Shell脚本;另一个是运行MapReduce应用程序的AM—MRAppMaster。

注:RM只负责监控AM,在AM运行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完成。

NodeManager(NM)

NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。

Container

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

注:1. Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。

2. 现在YARN仅支持CPU和内存两种资源,且使用了轻量级资源隔离机制Cgroups进行资源隔离。

YARN的资源管理和执行框架都是按主/从范例实现的——Slave ---节点管理器(NM)运行、监控每个节点,并向集群的Master---资源管理器(RM)报告资源的可用性状态,资源管理器最终为系统里所有应用分配资源。

特定应用的执行由ApplicationMaster控制,ApplicationMaster负责将一个应用分割成多个任务,并和资源管理器协调执行所需的资源,资源一旦分配好,ApplicationMaster就和节点管理器一起安排、执行、监控独立的应用任务。

需要说明的是, YARN不同服务组件的通信方式采用了事件驱动的异步并发机制,这样可以简化系统的设计。

来源: http://baike.baidu.com/link?url=89uk7XaDK00jje0PXqDI_GwUMyZEavnqfcaLsC7B01pHNloqHCRZg-W27uGS5YnRbB1mTf2jKa97PZ5IMHX-q_

时间: 2024-11-03 22:11:00

03 Yarn 原理介绍的相关文章

YARN原理介绍

文章包含内容: 1. YARN产生背景 2. YARN基本架构及原理 ----------------------------------------------------------- 1. YARN产生背景 Hadoop1.x中的MapReduce构成图 在Hadoop1.0中,MapReduce主要是由JobTracker和TaskTracker构成.MapReduce采用了Master/Slave架构,表现形式为一个JobTracker带多个TaskTracker,作为Master的J

大数据hadoop之YARN原理介绍

从该原理图中可以知道:在hadoop2的版本中:resource manager也就是YARNz是只负责资源的调度和回收而不参与应用程序的内部运作机制与运算,而在hadoop1的版本中,resourc manager不但要负责资源的调度和回收还要参与具体的运算. 在hadoop2中resouce manager接收用户的请求并分配地址和响应的id给用户,告诉浏览器将文件上传到分配的地址中:而 node manager会创建一个容器并下载用户上传的数据源 ,但是resource manager 和

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis

Traceroute原理介绍

一.路由追踪 路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP. 二.ICMP协议 Internet控制报文协议(internet control message protocol),它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息.这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用. 日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下

【spine】原理介绍和程序实现

突然间,微博上被@了,一看原来是之前的关于介绍 spine 的文章引起的.然后就是一阵惭愧,又开了一坑,然后就木有了.虽然,一直在研究 spine,但是的确没写下来相关的内容.于是,赶紧,补了一些内容. 官网内容转发,没啥技术含量.我自己写的运行库也完成了,虽然还需要打磨,但是比官方的更符合2dx 的风格.做了许久之后,对 spine 的理解更深了一点,然后就胡乱介绍下设计思路和为什么这么做. 概念 先来介绍下 spine 中的一些术语和概念 Bone 骨骼 spine 是骨骼编辑器,所以骨骼是

内存分析_.Net内存原理介绍

内存原理介绍 1.       .Net应用程序中的内存 1.1.Net内存类型 Windows使用一个系统:虚拟寻址系统.这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上.其实际结果是在32位的Windows操作系统中,每个进程都可以使用4GB的内存,当然,64位机这个数字就更大了,在这4GB的内存中存储着可执行代码.代码加载的DLL和程序运行的所有变量,这4GB的内存成为虚拟地址空间或虚拟内存.在.Net中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆. C#将数据分为2

04 MapReduce原理介绍

大数据实战(上) # MapReduce原理介绍 大纲: * Mapreduce介绍 * MapReduce2运行原理 * shuffle及排序 定义 * Mapreduce 最早是由google公司研究提出的一种免息nag大规模数据处理的并行计算模型和方法.是hadoop面向大数据并行处理的计算模型.框架和平台 * Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(

分布式文件系统FastDFS原理介绍

在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以上要求,这就迫使开发者不得不考虑使用其他方式解决此类问题.分布式文件系统就在这样迫切的需求下孕育而生. 今天为什么把标题定为“分布式文件系统”呢?是因为我想通过此次分享(FastDFS原理介绍),和大家去做更多关于分布式文件系统的研究和分享.我想这项研究应该会是一个“系列”性的专题.在本文之后还计划

DNS原理介绍和具体搭建DNS

DNS (Domail Name Server,域名服务) 一.DNS概述     DNS 是一种 C/S 架构,实现域名解析.服务端监听在 UDP/53 和 TCP/53 号端口.主要主机名与 IP 地址之间的名称解析. 所谓的名称解析:简单的来说是将一种名称转换为另一种名称.通常是用户名和 IP 地址之间的转换.它们之间是通过解析库来实现的.像 /etc/passwd 文件就是一种用户名和UID之间的一种解析库. 在 Linux 操作系统中,服务端协议的实现是 bind 软件,客户端通过调用