Hadoop 权威指南学习笔记(五)

                           MapReduce 的工作机制

JobTracker 对应于 NameNode

TaskTracker 对应于 DataNode
DataNode 和NameNode 是针对数据存放来而言的
JobTracker和TaskTracker是对于MapReduce执行而言的

参考:https://zhuanlan.zhihu.com/p/55108455

https://juejin.cn/post/6844903687089815565

在 YARN 体系结构中,ResourceManager 作为守护程序运行,作为架构中的全局的 master 角色,通常在专用计算机上运行,它在各种竞争应用程序之间仲裁可用的群集资源。ResourceManager 跟踪群集上可用的活动节点和资源的数量,并协调用户提交的应用程序应获取哪些资源以及事件。ResourceManager 是具有此信息的单个进程,因此它可以以共享,安全和多租户的方式进行调度决策(例如,根据应用程序优先级,队列容量,ACL,数据位置等)。

当用户提交应用程序时,将启动名为 ApplicationMaster 的轻量级进程实例,以协调应用程序中所有任务的执行。这包括监视任务,重新启动失败的任务,推测性地运行慢速任务以及计算应用程序计数器的总值。ApplicationMaster 和属于其应用程序的任务在 NodeManagers 控制的资源容器中运行

NodeManager 有许多动态创建的资源容器。容器的大小取决于它包含的资源量,例如内存、CPU、磁盘和网络IO。目前,仅支持内存和CPU。节点上的容器数是配置参数和用于守护程序及OS的资源之外的节点资源总量(例如总CPU和总内存)的乘积。

ApplicationMaster 可以在容器内运行任何类型的任务。例如,MapReduce ApplicationMaster 请求容器启动 map 或 reduce 任务,而 Giraph ApplicationMaster 请求容器运行 Giraph 任务。您还可以实现运行特定任务的自定义 ApplicationMaster

在 YARN 中,MapReduce 简单地降级为分布式应用程序的角色(但仍然是非常流行且有用的),现在称为MRv2。

此外,YARN 通过 ReservationSystem 支持资源预留的概念,ReservationSystem 允许用户通过配置文件来指定资源的时间和时间约束(例如,截止日期)的,并保留资源以确保重要作业的可预测执行。ReservationSystem 可跟踪资源超时,执行预留的准入控制,并动态指示基础调度程序确保预留已满。

ARN 总体上是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slave。

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

  • ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等;
  • NodeManager是Slave上一个独立运行的进程,负责上报节点的状态;
  • ApplicationMaster相当于这个Application的监护人和管理者,负责监控、管理这个Application的所有Attempt在cluster中各个节点上的具体运行,同时负责向Yarn ResourceManager申请资源、返还资源等;
  • Container是yarn中分配资源的一个单位,包涵内存、CPU等等资源,YARN以Container为单位分配资源;

ResourceManager 负责对各个 NadeManager 上资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的 ApplicationMaster,它负责向 ResourceManager 申请资源,并要求 NodeManger 启动可以占用一定资源的任务。由于不同的 ApplicationMaster 被分布到不同的节点上,因此它们之间不会相互影响。

 

 

 

Client 向 ResourceManager 提交的每一个应用程序都必须有一个 ApplicationMaster,它经过 ResourceManager 分配资源后,运行于某一个 Slave 节点的 Container 中,具体做事情的 Task。

 

容器(Container)这个东西是 Yarn 对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn 对资源的管理也是用到了这种思想。每一个任务对应一个container,且只能在container中运行。

Container 和集群节点的关系是:一个节点会运行多个 Container,但一个 Container 不会跨节点。任何一个 job 或 application 必须运行在一个或多个 Container 中,在 Yarn 框架中,ResourceManager 只负责告诉 ApplicationMaster 哪些 Containers 可以用,ApplicationMaster 还需要去找 NodeManager 请求分配具体的 Container。

 

如上所示,Yarn 将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。需要注意两点:

  • 容器由 NodeManager 启动和管理,并被它所监控。
  • 容器被 ResourceManager 进行调度。

NodeManager 和 ResourceManager 这两个组件会在下面讲到。

2.2 三个主要组件

再看最上面的图,我们能直观发现的两个主要的组件是 ResourceManager 和 NodeManager ,但其实还有一个 ApplicationMaster 在图中没有直观显示。我们分别来看这三个组件。

ResourceManager

我们先来说说上图中最中央的那个 ResourceManager(RM)。从名字上我们就能知道这个组件是负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。它也包含了两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。

定时调度器(Schedu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值