一、YARN
image.pngYARN系统由以下几个组成部分:
容器(container)
容器(container)是YARN中的计算单元,一部分cpu内核和一部分内存构成一个容器。相当于MapReduceV1的一个任务(task)执行器。
任何任务或者程序(单个任务或者多个任务组成的有向无环图)都运行在一个或者多个容器中。
集群节点与容器之间的关系:一个节点可以运行多个容器,但一个容器只能运行在一个节点上。在YARN框架中全权负责分配容器的组件叫做节点管理器。
节点管理器(Node Manager)
节点管理器(Node Manager)运行在集群中的一个节点上,集群中每个节点都运行着自己的节点管理器。
节点管理器作为一个从属服务,它接受资源管理器的请求,然后分配容器给应用程序。它还负责监控和汇报资源使用情况给资源管理器。
在Hadoop集群中,节点管理器和资源管理器一起协同工作,负责管理分配Hadoop系统资源。资源管理器是一个Hadoop集群的全局组件,节点管理器作为各个节点的代理来负责管理集群中每个节点的健康情况,管理每个已启动容器的整个生命周期。这种职责分离使得资源管理器相比传统的作业调度器(JobScheduler)具备更好的系统扩展性。
另外,节点管理器还运行各种YARN应用程序使用的辅助程序(auxiliary service)。比如,在hadoop 2.0实现中,MapReduce程序中Shuffle服务就是一个辅助服务。
全局资源管理器(Global Resource Manager)
资源管理器,在上文已经介绍,它和节点管理器一起协同工作,负责管理分配Hadoop系统资源。
资源管理器的核心是一个调度器:当多个应用程序竞争使用集群资源的时候,它来负责资源的分配调度,确保资源的优化合理使用。
调度器按照程序队列和集群的处理能力,负责为正在运行的多个应用程序分配其所需的集群资源。Hadoop自带计算能力调度器和公平调度器。
应用程序管理器(Application Master)
应用程序管理器是YARN与老的MapReduceV1框架之间的关键区别。
应用程序管理器是一个特定的框架函数库(framework-specific library)实例,它同资源管理器协调沟通资源,并通过节点管理器来获取这些系统资源,然后执行任务。
这样设计的应用程序管理器可以提高可扩展性和框架通用性,使用不同的应用程序管理器来管理基于不同设计思想的计算框架,使得多种计算框架可以共存于一个统一的管理系统中。
Hadoop系统现在不仅支持MapReduce类型的计算,它变得更加插件化:如果系统要增加某种类型的计算框架,就开发一种对应的程序管理器,并把这个程序管理器以插件的形式整合到hadoop系统之中。
二、YARN请求步骤
主要分为两大步:首先,分配容器,启动应用程序管理器,为程序作业做准备;然后由应用程序管理器请求容器,运行程序作业。详细如下:
应用程序管理器启动 给作业分配资源并执行作业
三、HDFS的高可用性
在Hadoop1.x中,名称节点会引发系统单点故障。而在Hadoop2.x中,引入了高可用名称节点概念。核心思想是使用两个相同的名称节点:一个处于活动模式,一个处于待机模式。处于活动模式的名称节点未系统提供服务,处于待机模式的名称节点需要实时同步活动名称节点的数据。一旦活动名称节点宕机,系统进行快速的故障切换。
在当前设计中,两个名称节点共享同一个存储设备。活动名称节点的任何修改都会记录到共享存储中的edits日志文件。待机名称节点将这些修改应用到自己的名称空间中。一旦活动名称节点故障,待机名称节点会确保edits文件中的所有数据都被应用。
image.png
网友评论