大数据之Hadoop2.0框架之YARN(四)

引言

\quad \quad Hadoop1.0中的MapReduce框架中的JobTracker/TaskTracker在可扩展性、内存消耗、可靠性和线程模型方面存在很多问题,因此Hadoop2.0对MapReduce框架做了彻底的重构。同时Hadoop2.0 MapReduce框架被命名为Yarn(Yet Another Resource Negotiator,另一种资源协调者)。

HADOOP 1.0 与 HADOOP 2.0

在这里插入图片描述

在 HADOOP 2.0中,HDFS可以理解为磁盘,进行存储;YARN可以理解为分布式操作系统;MR与其他(如Spark,Storm,Flink等)可以理解为应用程序。

1、YARN -(Yet Another Resource Negotiator )

在这里插入图片描述

\quad \quad Yarn—Hadoop的集群资源管理系统,与旧MapReduce作比较,YARN采用了一种分层的集群框架,具有以下作用

  • YARN是一个框架管理器,用户可以将各种计算框架(如MapReduce、Storm、Spark、Flink等)移植到YARN上,统一由YARN进行管理和资源调度。从而为计算框架提供了基本服务来更好地利用大的、动态的、并行的基础设施资源, 使得多种计算框架可以运行在一个集群中。

  • 负责集群的资源管理和调度

  • 解决了NameNode的单点故障问题,可以通过配置NameNode的高可用来解决

  • 提出了HDFS联邦,通过HDFS联邦可以可以使多个NameNode分别管理不同的目录,从而实现访问隔离以及横向扩展。

  • 将资源管理和应用程序管理分离开,分别由ResouceManager和ApplicationMaster负责

  • 具有向后兼容的特点,运行在MR1的作业不需要做任何修改就可以运行在YARN上。

特点:

  • 良好的扩展性、高可用
  • 对多种类型应用进行统一管理和调度
  • 自带了多种用户调度器,适合共享集群环境
  • 相比传统模式,提高了资源利用率、降低运维成本和数据共享成本

2、YARN 的核心思想

2.1 MapReduce1.0

\quad \quad 对MapReduce 1.0来说,同样是一个主从结构,是由一个JobTracker(主)和多个TaskTracker(从)组成。

在这里插入图片描述
可以看得出JobTracker相当于是一个资源管理调度器,必然要面对大量的任务处理。而且出现错误集群必然崩溃。
各个角色的功能

1、JobTracker:主,承担着资源管理和任务管理,监控的角色。

  • Master
  • 接受客户请求,管理所有作业,资源
  • 将任务分解成一系列任务,将任务指派给TaskTracker
  • 作业/任务监控、错误处理等

2、TaskTracker:从,干活

  • Slave
  • 运行Map Task和Reduce Tack
  • 与JobTracker保持通信状态,执行任务,并汇报任务状态

缺点:

  • 存在单点故障问题,一旦Master节点坏掉即JobTracker故障,其他节点不能再工作。
  • JobTacker工作过重,如果任务多时开销太大。
  • 容易出现内存溢出,分配资源只考虑MapReduce任务数,不考虑CPU、内存。
  • 资源划分不合理(强制划分为slot,包括Map slot和Reduce slot)

hadoop 1.0 中,slot就是资源,map有map的slot, reduce有reduce的slot, 二者不是互通的
slot当成小区的车位(普通小轿车,大型卡车),进行严格的限制
slot资源的调配单元,slot决定cpu和内存的大小

假设:一个slot代表2G内存和1个cpu
case 1 :一个任务需要1G内存和1个cpu, 集群资源利用率偏低
case 2 : 一个任务需要3G内存,集群利用率过高

1个节点(机器),16个cpu, 32G内存,机器上配置了4个slot
每个slot 4个cpu,8G内存(等量划分),将资源完全平均化

优化方向:

  • 减少单个 JobTracker 的职责,将部分职责委派给 TaskTracker,因为集群中有许多
    TaskTracker。在新设计中,这个概念通过将 JobTracker 的双重职责(集群资源管理和任务
    协调)分开为两种不同类型的进程来反映
  • 不再拥有JobTracker,引入集群管理器,负责跟踪集群中的活动节点和可用资源,并将它们
    分配给任务
  • 对于提交给集群的每个作业,会启动一个专用的、短暂的 JobTracker 来控制该作业中的任
    务的执行,短暂的 JobTracker 由在从属节点上运行的 TaskTracker 启动

2.2 YARN、MRv2

\quad \quad Hadoop2.0以后,MapReduce1.0中的资源管理调度功能,被单独分离出来形成了YARN,它是一个纯粹的资源管理调度框架,而不是一个计算框架。

在这里插入图片描述

  • ResourceManager(RM) 代替集群管理器
  • ApplicationMaster(AM) 代替一个专用且短暂的 JobTracker
  • NodeManager(NM) 代替 TaskTracker
  • 一个分布式应用程序代替一个 MapReduce 作业

\quad \quad YARN重构的根本思想:将 JobTracker 两个主要的功能分离成单独的组件,这两个功
能是资源管理和任务调度 / 监控

MRv2:

\quad \quad 被剥离了资源管理调度功能的MapReduce就变成了MapReduce2.0(MRv2),不再是Hadoop的核心组件,而是运行在YARN之上的一个纯粹的计算应用框架,不再自己负责资源调度管理服务,而是由YARN为其提供资源管理调度服务。
在这里插入图片描述

3、YARN 架构

在这里插入图片描述

3.1 核心概念

ResourceManager
是yarn的主,相当于1.0中jobtracker,进行权利的下放。

本质:是一个进程,运行在专有的机器上的,要求机器的配置足够高

  • RM处理客户端请求,接收JobSubmitter提交的作业,按照作业的上下文
    (Context) 信息,以及从 NodeManager(NM) 收集来的状态信息,启动调度
    过程,分配一个 Container 作为 App Mstr
  • RM拥有为系统中所有应用资源分配的决定权,是中心服务,做的事情就是调度
    、启动每一个Job所属的Application、另外监控Application的存在情况
  • 与运行在每个节点上的NM进程交互,通过心跳通信,达到监控NM的目的
  • RM有一个可插拔的调度器组件Scheduler
    • Scheduler是一个纯粹的调度器:
      • 不负责应用程序的监控和状态跟踪
      • 只根据应用所需的资源执行调度,调度内存、CPU、硬盘和网络等资源到 Container。

NodeManager

是slave进程,类似TaskTracker的角色,是每个机器框架代理,每个节点的主

  • 接受RM请求
  • 接收并处理来自ApplicationMaster的Container启动、停止等各种请求
  • 负责启动应用程序的Container(执行应用程序的容器),并监控他们的资源使用情况(CPU、内存、磁盘和网络),并报告给RM
  • 总的来说,在单节点上进行资源管理和任务管理

ApplicationMaster

  • 应用程序的Master,每一个应用对应一个AM,在用户提交一个应用程序时,一
    个AM的轻量型进程实例会启动,AM协调应用程序内的所有任务的执行
  • 负责一个Job生命周期内的所有工作,即负责jobtracker中“任务调度”的角色
  • 每一个Job都有一个AM,运行在RM以外的机器上。启动任务的时候 AM启动, 当任务执行完毕,AM消失。
  • 与RM协商资源
    – 与Scheduler协商合适的Container
  • 与NM协同工作与Scheduler协商合适的Container进行Container的监控
  • 是一个普通Container的身份运行

Container
本质:是一个进程,是由NM进行启动,作用:真正执行任务的地方

  • 是任务运行环境的抽象封装

  • Container只是使用NM上指定资源的权利

  • AM必须向NM提供更多的信息来启动Container

  • Container与AM保持通信状态,报告任务的状态和健康信息

  • 描述任务的运行资源(节点、内存、cpu)、启动命令和运行环境,(本质是 cpu和内存资源)

一个节点有多少个container?
container数量=min(2cores, 1.8disks, 总内存大小/最小容量)
其中,cores:内存 ;disks:磁盘的规模以及总内存大小是固定的
因此,通过最小容量参数配置,达到控制container数量

3.2 YARN工作流程

在这里插入图片描述

  • client向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等

  • ResourceManager启动一个NodeManager的一个container用于运行ApplicationMaster

  • 启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳

  • ApplicationMaster向ResourceManager发送请求,申请相应数目的container

  • 申请成功的container,由ApplicationMaster进行初始化。container的启动信息初始化后,AM与对应的NodeManager通信,要求NM启动container

  • NM启动container

  • container运行期间,ApplicationMaster对container进行监控。container通过RPC协议向对应的AM汇报自己的进度和状态等信息

  • 应用运行结束后,ApplicationMaster向ResourceManager注销自己,并允许属于它的container被收回

详细版:

在这里插入图片描述

3.3 YARN 优势

Yarn 框架对于旧的 MapReduce 框架的优势:

  • 减小了 JobTracker(也就是现在的 RM)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美
  • AM是一个可变更的部分,用户可以对不同的编程模型写自己的 AM,让更多类型的编程模型能够跑在 Hadoop 集群中
  • 对于资源的表示以内存为单位,比之前以剩余 slot 数目更合理
  • 老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了
  • 资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况

3.4 YARN默认的调度器及区别

1)YARN调度器主要分为三类:

  • 1、FIFO :先进先出,同一个队列中现先提交的先执行,后面等待
  • 2、Capacity Scheduler(容量调度器): 允许创建多个任务队列,每个队列使用所有资源的一部分。多个任务队列可 以同时执行。但是一个队列内部还是先进先出。
  • 3、Fair Scheduler(公平调度): 第一个程序在启动时可以占用其他队列资源(100%占用),当其他队列有 任务提交时,占用资源的队列需要将资源还给该任务。还资源的时候,效率 比较慢。

3.5 YARN 容错能力

  • RM挂掉:单点故障,新版本可以基于Zookeeper实现HA高可用集群,可通过配置进行设置准备RM,主提供服务,备同步主的信息,一旦主挂掉,备立即做切换接替进行服务
  • NM挂掉:不止一个,当一个挂了,会通过心跳方式通知RM,RM将情况通知对应AM,AM作进一步处理(将原来这个机器上启动的任务交给另外节点接管)
  • AM挂掉:若挂掉,RM负责重启,其实RM上有一个RMApplicationMaster, 是AM的AM,上面保存已经完成的task,若重启AM,无需重新运行已经完成的task
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值