前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hadoop on Yarn 各组件详细原理

Hadoop on Yarn 各组件详细原理

作者头像
用户3003813
发布于 2018-09-06 06:15:22
发布于 2018-09-06 06:15:22
8490
举报
文章被收录于专栏:个人分享个人分享

  运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台。ApplicationMaster和相应的container一起组成了一个Yarn的应用系统。

  ResourceManager提供应用程序的调度,每个应用程序由一个ApplicationMaster管理,以Container的形式请求每个任务的计算资源。Container由ResourceMangaer调度,由每个节点的NodeManager上进行本地的管理。

ResourceManager 组件

 弄了一个大大的ResourceManager,醒目吧哈哈- -,扯淡到此为止,ResourceManager是Master,仲裁集群所有的可用资源,从而帮助管理运行在Yarn平台上的分布式应用程序。与其他组建的协作包括:接收ApplicationMaster的资源请求,每个节点的NodeManager从ResourceManager中获取指令,管理单个节点上的可用资源。(ApplicationMaster的职责就是向ResourceManager申请资源并且和NodeManager一起工作、启动、监控和停止Container。

一、客户端和ResourceManager交互

  这里细说Client端的话,ResourceManager主要是通过Client Service、Admininistration Service、Application ACL Manager ResourceManager Web Application及Web Service组件与客户端交互。

  1、Client Service

  这个服务实现了基本的客户端ResourceManager的接口ApplicationClientProtocol.该组件处理所有来自客户端到ResourceManager的远程过程调用(RPC)通信。包括:应用程序提交、应用程序终止、获取应用程序,队列,集群统计,用户ACL及更多信息。在安全模式下,Client Service确保所来自用户的请求都已经认证过(比如通过Kerberos),对于不能直接通过Kerberos认证的客户端,ClientRMService也提供了API,包括ResourceManager代理令牌,代理令牌是Kerberos认证客户端的一种特殊对象,能够第一次安全的与ResourceManager通信并传递给它自己额非认证的进程。

  2、Administration Service

  既然Client Service是负责处理一般用户应用程序的提交或终止,为了确保管理员的请求不会被一般用户的请求饿死,提供了搞优先级的操作命令,这里就多分离出了一个接口供管理员使用。通过ResourceManagerAdministrationProtocol来实现的通信协议。包含的主要操作有:刷新队列重新分配队列或改变队列的属性刷新ResourceManager处理的节点列表,例如:增加新安装的节点或退役现有节点等。

  3、Application ACL Manager

  类似客户端和管理员等的请求这样面向用户的API,ResourceManager可以通过设置配置属性yarn.acl.enable为true来启动应用程序的ACL。查看访问的ACL决定谁可以通过RPC接口查看一些货所有应用程序的相关细节,WEB UI服务及WEB服务,修改的ACL决定着哪些用户可以"修改"应用程序(杀死程序等)

当相同的ACL信息传递给ApplicationMaster,这样ApplicationMaster可以使用该信息让用户访问ApplicationMaster内部运行的一些服务,作为ContainerLaunchContext的一部分,当拉起一个容器时NodeManager也接收相同的ACL信息,然后使用它们控制针对应用程序/container的请求,主要包括它们的状态、应用日志等。

  4、ResourceManager Web Application 和 Web Service

  这个就是ResourceManager的一个web应用程序来输出集群的状态信息、指标、节点活跃列表等,指向ApplicationMaster Web接口的超链接及一个调度的专用接口。(就是我们在集群配置中加入的web.address)

二、应用程序与ResourceManager的通信

  一旦应用程序通过ResourceManager中的面向客户端的服务,它就会穿过ResourceManager的内部,负责拉起ApplicationMaster的状态机。主要包括以下几个通信方面:

  1、ApplicationMaster Service

  该组件相应所有来自ApplicationMaster的请求,实现了ApplicationMasterProtocol协议,这是ApplicationMaster与ResourceManager通信的唯一协议。主要包括以下任务:注册新的ApplicationMaster来自任意正在结束的ApplicationMaster的终止/取消注册请求认证来自不同ApplicaitonMaster的所有请求确保合法的ApplicationMaster发送的请求传递给ResourceManager中的应用程序对象、获取来自所有运行ApplicationMaster的Container的分配和释放请求、异步的转发给Yarn调度器.

  ApplicaitonMaster Service确保了任意时间点、任意ApplicaitionMaster只有一个线程可以发送请求给ResourceManager,因为在ResourceManager上所有来自ApplicaitonMaster的RPC请求都串行化了。

 2、ApplicationMaster 存活监控

  这个监控器跟踪每个ApplicationMaster以及它的最后的心跳时间。可在配置文件中配置时间,在配置时间内没有产生心跳的ApplicationMaster会被标记为死亡,ResourceManager会重新调度这个应用程序,在一个新的container上运行一个新的ApplicaitonMaster实例,默认情况下,最多允许两次这样的尝试。

三、节点和ResourceManager 通信

  下列是ResourceManager的组件和运行在集群节点上的NodeManager进行通信。

  1、ResourceManager Tracker Service

  NodeManager发送心跳给ResourceManager,ResourceManager的该组件负责相应来自所有节点的RPC。实现了ResourceTracker接口与所有NodeManager的通信。主要负责:注册新节点接收前面注册节点的心跳确保合法的节点可以和ResourceManager通信。Reource Tracker Service转发一个合法的心跳给YARN调度器,YARN调度器随后根据节点的空闲资源及不同应用程序的资源请求做调度决定。

  2、NodeManagers 存活监控

  为跟踪活跃的节点和确定已死的节点,该组件跟踪每一个节点的标识符(ID)和它最后的心跳时间。

  3、Nodes-List Manager

  是在ResourceManager内存中的一个集合,包括有效节点和被排除的节点。它也跟踪由管理员明确退役的节点。

ApplicationMaster 组件

  ApplicationMaster负责管理已提交的应用程序的集合。在应用程序提交后,首先检查其合法性,然后,确定没有其他已提交的应用程序已经使用相同的ID.该组件还负责记录和管理已结束的应用程序,过段时间才会从ResourceManager的内存中清除。

一、ApplicationMaster Launcher

  在Yarn中,每一个其他类型的Container的拉起都是由ApplicationMaster发起的,ApplicationMaster本身的Container是由ResourceManager申请,并在NodeManager上准备和拉起的。该组件维护一个线程池来设置环境,且和NodeManager通信来拉起新提交应用程序的ApplicationMaster,或者因为某些原因失败的先前应用程序实例所失败的ApplicationMaster。它也在以应用程序正常结束或者要强行终止时,负责告诉NodeManager来清理ApplicaitonMaster。(杀掉相应进程)

二、YarnScheduler

  Yarn调度器负责给正在运行的应用程序分配资源,这些应用程序受到容量、队列等各方面的限制。

三、ContainerAllocationExpirer

  该组件负责确保所有分配的Container最终被ApplicationMaster使用,并在相应的NodeManager上拉起。

NodeManager 组件

  NodeManager接受来自ApplicationMaster的启动或停止Container的请求,管理Container是NodeManager的核心功能。在真正拉起一个Container之前,NodeManager会将所有需要的库文件下载到本地,包括数据文件,可执行文件、tarball、JAR文件,shell脚本等待。这样下载好的库文件可以通过本地应用级别缓存被同一应用的多个Container共享

  NodeManager内部也可以划分为一些列嵌套组件,卧槽好多啊。。。

一、NodeStatusUpdater

   在NodeManager刚启动时,NodeStatusUpdater组件会向ResourceManager注册,发送本节点的可用资源,以及NodeManager的Web server和RPC Server的监听端口。ResourceManager在注册过程中,向NodeManager发出安全相关的key,NodeManager将用这个KEY作为ApplicationMaster的Container请求做认证。

二、ContainerManager

  是NodeManager的核心管理组件。其中也包含许多子组件:RPC Server资源本地化服务PUBLIC资源的本地化等等。

具体组件就不一一列举了。。。。太多了。。。。。。。

整个作业大体总体运行流程:

1、应用程序提交给ResourceManager。

2、ApplicationMaster启动,并向ResourceManager注册。

3、ApplicationMaster向ResourceManager请求Container执行实际的工作。

4、ApplicationMaster将从ResourceManager分配的Container信息(包括各种资源配置啊等信息)传递给NodeManager启动。

5、随之,计算过程在Container中进行,这些Container将与ApplicationMaster保持通信,发送心跳等告知任务过程。

6、当应用程序完成后,Container被停止,ApplicationMaster从ResourceManager中注销。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hadoop学习笔记(四)之YARN
之前,MapReduce 是 Master/Slave 结构,也就是集群中一个 Job Tracker 多个 Task Tracker 。 Job Tracker 负责资源管理和作业调度,Task Tracker 负责定期向 Job Tracker 报告节点的状态(节点死活,资源使用情况、任务执行情况)以及接收 Job Tracker 的命令来执行。不知你是否发现,问题就出现在这一个 Job Tracker 上,它挂掉,整个集群都完蛋。而且它由于负责了所有节点的RPC 请求,压力可想而知,也因此成为了节点规模扩大的瓶颈。最后一点便是集群仅支持 MapReduce,不支持其他计算框架。如果想使用 Spark 呢?对不起,再搭建一个集群,想使用 HBase 只能再搭建一个集群。这样的一堆集群既不好管理,又使得资源利用率极低(一段时间内这个集群忙,那个集群闲),同时跨集群的数据转移更是问题。于是乎,YARN 诞生了。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
小闫同学啊
2020/04/22
4790
Hadoop学习笔记(四)之YARN
YARN资源调度系统介绍
申请资源->启动ApplicationMaster->申请运行任务的container->分发Task->运行Task->Task结束->回收container->待所有container运行结束->回收ApplicationMaster->应用运行完成
醉独醒
2022/08/02
1.4K0
YARN学习基础
YARN是当前Hadoop中非常重要的一个组件,我们可以通过本文初步了解一下YARN。
拾荒者peanutchen
2020/02/03
7140
YARN学习基础
Apache Hadoop Yarn 入门(一)
Apache Hadoop Yarn (Yet Another Resource Negotiator,另一种资源协调者),是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。
刘浩的BigDataPath
2021/04/13
2.7K0
Apache Hadoop Yarn 入门(一)
Hadoop - YARN Introduce
ResourceManager(RM)是一个全局的资源管理器,负责整个系统的资源管理和分配,主要包括两个组件,即调度器(Scheduler)和应用程序管理器(Applications Manager)。
mantou
2019/08/20
7290
Hadoop - YARN Introduce
yarn 学习笔记(对比 kubernetes 调度)
ApplicationMaster(AM),用户提交的每个应用程序都需要包含一个AM, 作用为:
王磊-字节跳动
2020/11/03
4.5K0
进击大数据系列(五):Hadoop 统一资源管理和调度平台 YARN
Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。
民工哥
2023/08/22
1.3K0
进击大数据系列(五):Hadoop 统一资源管理和调度平台 YARN
YARN 设计理念与基本架构
ResourceManager 是一个全局的资源管理器,负责整个集群的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Master,ASM)。
codingforfun
2018/08/24
5140
YARN 设计理念与基本架构
弄懂Hadoop YARN
从YARN基本架构图来看,它主要由ResourceManager、NodeManager、APP
用户8639654
2021/07/16
2820
独家 | 一文读懂Hadoop(四):YARN
随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识。2017年年初apache发行了Hadoop3.0,也意味着一直有一群人在对Hadoop不断的做优化,不仅如此,各个Hadoop的商业版本也有好多公司正在使用,这也印证了它的商业价值。 读者可以通过阅读“一文读懂Hadoop”系列文章,对Hadoop技术有个全面的了解,它涵盖了Hadoop官网的所有知识点,并且通俗易懂,英文不好的读者完全可以通过阅读此篇文章了解Hado
数据派THU
2018/01/30
1.7K0
独家 | 一文读懂Hadoop(四):YARN
Hadoop基础教程-第5章 YARN:资源调度平台(5.1 YARN介绍)
YARN的全称是Yet Another Resource Negotiator,意为另一种资源调度者。 从Apache Hadoop 2.0开始, Hadoop包含 YARN。
程裕强
2022/05/06
5770
Hadoop基础教程-第5章 YARN:资源调度平台(5.1 YARN介绍)
ResourceManager剖析
一:概述 1.1 ResourceManager基本职能 ResourceManager需通过两个RPC协议与NodeManager和ApplicationMaster交互,具体如下: ResourceTracker:NodeManager通过该RPC协议向ResourceManager注册、汇报节点健康状况和Container运行状态,并领取ResourceManager下达的命令,这些命令包括重新初始化、清理Container等,在该RPC协议中,NodeManager与ResourceMana
codingforfun
2018/08/24
6980
ResourceManager剖析
Hadoop2.x 让你真正明白yarn
问题导读 1.hadoop1.x中mapreduce框架与yarn有什么共同点? 2.它们有什么不同点? 3.yarn中有哪些改变? 4.yarn中有哪些术语? 原文:about云日志分析项
用户1410343
2018/03/27
1.3K0
Hadoop2.x 让你真正明白yarn
Hadoop Yarn初探
前言 经过多年的发展形成了Hadoop1.X生态系统,其结构如下图所示: 其mapReduce的结构如下: 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:
用户1665735
2018/06/20
1.1K0
一起揭开 YARN 的神秘面纱
我们知道MapReduce1.0,是把计算框架和资源调度框架都弄在一起了,所以Master端的JobTracker会大包大揽去执行任务,存在很多问题,比如资源分配不均、单点故障会导致整个集群不可用、没办法集成多个不同的计算框架(比如Spark、Storm)。因此,YARN的设计思路就是把原先JobTracker的资源管理调度和监控的功能剥离出来,在YARN中实现,而MapReduce2.0仅仅就是做计算框架的事情。同时,YARN还可以兼容搭建多个不同的计算框架,实现同一个集群内资源和数据的共享。
Sam Gor
2021/10/19
5600
一起揭开 YARN 的神秘面纱
快速、安全、可靠!Yarn!| MTdata小讲堂
Yarn 的全称是 Yet Anther Resource Negotiator(另一种资源协商者)。它作为 Hadoop 的一个组件,官方对它的定义是一个工作调度和集群资源管理的框架。关于 Yarn 的发展历史我们在之前的文章曾介绍过,在这里就不赘述了。
美图数据技术团队
2018/09/18
5840
快速、安全、可靠!Yarn!| MTdata小讲堂
Yarn资源调度工作原理
由于Yarn良好的兼容性和扩展性,目前可以支持大部分数据引擎,所以了解Yarn的资源调度原理很有必要,Yarn主要由四个重要角色组成:
actionzhang
2022/11/30
8380
Yarn资源调度工作原理
Yarn 详解
Container是Yarn框架的计算单元,是具体执行应用task(如map task、reduce task)的基本单位。Container和集群节点的关系是:一个节点会运行多个Container,但一个Container不会跨节点。
俺也想起舞
2019/07/24
2.3K0
Yarn框架深入理解【Yarn集群配置】
我们都知道Hadoop诞生的目标是为了支持十几台机器的搜索服务,但是随着数据的增加,数据的可用性也是一个待解决的问题。但是Hadoop框架的自身问题限制了集群的发展。
Java架构师必看
2021/05/14
3.1K0
Yarn框架深入理解【Yarn集群配置】
Flink源码分析之Flink on YARN - Per Job
用户的应用程序是一个分布式程序,需要按照YARN的规范来写才能提交到YARN集群被调度运行起来。
楞头青
2022/07/09
2.3K0
相关推荐
Hadoop学习笔记(四)之YARN
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档