暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hadoop|集群资源管理器——YARN

泰迪教育 2020-09-03
918




泰迪学院-Hadoop连载

公众号ID:taidixueyuan


YARN简介

Hadoop YARN的目的是使得Hadoop数据处理能力超越MapReduce。众所周知,Hadoop HDFS是Hadoop的数据存储层,Hadoop MapReduce是数据处理层。然而,MapReduce已经不能满足今天广泛的数据处理需求,如实时/准实时计算、图计算等。而Hadoop YARN提供了一个更加通用的资源管理和分布式应用框架。在这个框架上,用户可以根据自己的需求实现定制化的数据处理应用。

而Hadoop MapReduce也是YARN上的一个应用。YARN的另一个目标就是拓展Hadoop,使得它不仅可以支持MapReduce计算,还能很方便地管理诸如Hive、HBase、Pig、Spark/Shark等应用。这种新的架构设计能够使得各种类型的应用运行在Hadoop上面,并通过YARN从系统层面进行统一的管理,也就是说,有了YARN,各种应用就可以互不干扰地运行在同一个Hadoop系统中,共享整个集群资源。

YARN基本架构和任务流程

在Hadoop 1.0版本中还没有YARN框架,Hadoop 1.0中的MapReduce框架(简称MRv1)由Client、JobTracker和TaskTracker三个部分组成,Client负责提交任务,JobTracker负责资源管理和任务调度,TaskTracker负责执行任务和汇报任务情况。YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1的JobTracker拆分成两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。

(1)YARN基本组成结构

YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。本节将对YARN的基本组成结构进行介绍。

图1描述了YARN的基本组成结构,YARN主要由ResourceManager、NodeManager、ApplicationMaster和Client Application等构成。

图1  YARN架构


① ResourceManager(RM)

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

调度器负责将系统中的资源分配给各个正在运行的应用程序,它不从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务。

应用程序管理器负责处理客户端提交的Job以及协商第一个Container(包装资源的对象)以供ApplicationMaster运行,并且在ApplicationMaster失败的时候会重新启动ApplicationMaster。

② NodeManager(NM)

NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。其中,Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

③ ApplicationMaster(AM)

在用户提交每个应用程序时系统都会生成一个ApplicationMaster程序包含到提交的程序里,主要功能如下。

· 与ResourceManager调度器协商以获取资源(用 Container表示)。

· 将得到的任务进一步分配给内部的任务。

· 与NodeManager通信以启动/停止任务。

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


④ Client Application

Client Application是客户端应用程序,客户端将应用程序提交到RM,首先会创建一个Application上下文件对象,并设置AM必需的资源请求信息,然后提交到RM。

(2)YARN工作流程

接下来详细描述YARN从提交任务到完成任务的整个工作流程。如图2所示,YARN的工作流程分为以下几个步骤。


图2  YARN任务执行流程图


① 用户通过客户端Client提交一个应用程序到YARN中进行处理,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

② ResourceManager为该应用程序分配第一个Container,并与分配的Container所在位置的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。该Container用于启动ApplicationMaster和ApplicationMaster后续命令使用。

③ ApplicationMaster启动后先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后开始为提交的应用程序所需要执行的各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤④~⑦。这个示例应用中需要执行两个Map任务和一个Reduce任务,所以需要轮番执行④~⑦步骤3次,先执行Map任务后再执行Reduce任务。

④ ApplicationMaster采用轮流询问的方式通过RPC协议向ResourceManager申请和领取资源。所以多个应用程序同时提交时,不一定是第一个先执行。

⑤ 一旦ApplicationMaster申请到资源后,便与资源对应的NodeManager通信,要求它在分配的资源中启动任务。

⑥ NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

⑦ 被启动的任务开始执行,各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。

⑧ 应用程序运行完成后,ApplicationMaster向ResourceManager注销自己。

⑨ 关闭客户端与ApplicationMaster。


电子商务网站用户行为分析及服务推荐(三)
 数据预处理,将于下周一推送
整理不易,求三连(分享、点赞、在看


文章转载自泰迪教育,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论