Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

  YARN是在MRv1基础上演化而来的,它克服了MRv1中的各种局限性。
  扩展性差:在 MRv1 中,JobTracker 同时兼备了资源管理和作业控制两个功能,这成为系统的一个最大瓶颈,严重制约了 Hadoop 集群扩展性。
  可靠性差:MRv1采用了master/slave结构,其中master存在单点故障问题,一旦它出现故障将导致整个集群不可用。

  资源利用率低:MRv1采用了基于槽位的资源分配模型,槽位是一种粗粒度的资源划分单位,通常一个任务不会用完槽位对应的资源,其他任务也无法使用这些空闲资源。此外,Hadoop将槽位分为Map Slot和Reduce Slot两种,且不允许它们之间共享, 常常会导致一种槽位资源紧张而另外一种闲置(比如一个作业刚刚提交时,只会运行Map Task,此时Reduce Slot闲置)。
  无法支持多种计算框架:随着互联网高速发展,MapReduce这种基于磁盘的离线计算框架已经不能满足应用要求,从而出现了一些新的计算框架,包括内存计算框架、流式计算框架和迭代式计算框架等,而MRv1不能支持多种计算框架并存。

  yarn的工作流程:

  1.用户向YARN提交应用程序,其中包括ApplicationMaster程序,启动AM的命令,用户程序。
  2.RM为该应用程序分配第一个Container,并与对应的NM通信,要求它在这个Container中启动应用程序对应的AM。
  3.AM启动后向RM注册,用户可以直接通过RM查看应用程序的运行状态。重复4~7。
  4.AM采用轮询的方式通过RPC协议向RM申请和领取资源。
  5.一旦AM申请到资源后,与对应的NM通信,要求它启动任务。
  6.NM为任务设置好运行环境(包括环境变量、JAR包、二级制程序等)后,将任务启动命令写入一个脚本中,通过该脚本启动任务。
  7.各个任务通过RPC协议向AM汇报自己的状态和进度,以让AM随时掌握任务的运行状态,从而可以在任务失败时重启任务。
  8.任务运行完成后,AM向RM注销并关闭自己。

  资源调度器是YARN中最核心的组件之一,且是插拔式的,它定义了一整套接口规范以便用户可按照需要实现自己的调度器。YARN自带了FIFO、Capacity Scheduler和Fair Scheduler三种常用资源调度器,当然,用户可按照接口规范编写一个新的资源调度器,并通过简单的配置使它运行起来。

  YARN采用了双层资源调度模型:在第一层中,ResourceManager中的资源调度器将资源分配给各个ApplicationMaster;在第二层中,ApplicationMaster再进一步将资源分配给它内部的各个任务。这里资源调度器主要关注的是第一层的调度问题,至于第二层的调度策略,完全由用户应用程序自己决定。
  YARN采用的是pull-base通信模型,而不是push-base通信模型。资源调度器将资源分配给一个应用程序后,它不会立刻push给对应的ApplicationMaster,而是暂时放到一个缓冲区中,等待ApplicationMaster通过周期性的心跳主动来取。

  在资源调度器中,每个队列可设置一个最小资源量和最大资源量,其中,最小资源量是资源紧缺情况下每个队列需保证的资源量,而最大资源量则是极端情况下队列也不能超过的资源使用量。资源抢占发生的原因则完全是由于“最小资源量”这一概念。通常而言,为了提高资源利用率,资源调度器(包括Capacity Scheduler和Fair Scheduler) 会将负载较轻的队列的资源暂时分配给负载重的队列(即最小资源量并不是硬资源保证,当队列不需要任何资源时,并不会满足它的最小资源量,而是暂时将空闲资源分配给其他需要资源的队列),仅当负载较轻队列突然收到新提交的应用程序时,调度器才进一步将本属于该队列的资源分配给它。但由于此时资源可能正被其他队列使用,因此调度器必须等待其他队列释放资源后,才能将这些资源“物归原主”,这通常需要一段不确定的等待时间。为了防止应用程序等待时间过长, 调度器等待一段时间后若发现资源并未得到释放,则进行资源抢占。

转载于:https://www.cnblogs.com/yuanninesuns/p/8407164.html

Hadoop整理四(Hadoop分布式计算框架MapReduce)相关推荐

  1. Hadoop技术(二)资源管理器YARN和分布式计算框架MapReduce

    资源管理器YARN和分布式计算框架MapReduce 第一章 Hadoop MapReduce 是什么 一 MapReduce 介绍 1. 基本介绍 2. MR数据流程方向 3. MR 原语/ 核心思 ...

  2. 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程

    [大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...

  3. 【MapReduce】分布式计算框架MapReduce

    分布式计算框架MapReduce 什么是MapReduce? MapReduce起源是2004年10月Google发表了MapReduce论文,之后由Mike Cafarella在Nutch(爬虫项目 ...

  4. Hadoop大数据原理(3) - 分布式计算框架MapReduce

    文章目录 1. 大数据的通用计算 2 MapReduce编程模型 3. MapReduce计算框架 3.1 三类关键进程 大数据应用进程 JobTracker进程 TaskTracker进程 3.2 ...

  5. hadoop基础----hadoop理论(四)-----hadoop分布式并行计算模型MapReduce详解

    我们在前一章已经学习了HDFS: hadoop基础----hadoop理论(三)-----hadoop分布式文件系统HDFS详解 我们已经知道Hadoop=HDFS(文件系统,数据存储技术相关)+ M ...

  6. 分布式计算框架——MapReduce

    一.MapReduce概述 Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序.编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集. MapReduce ...

  7. 分布式计算框架MapReduce架构

    Hadoop核心由HDFS和MapReduce组成,HDFS负责分布式存储,MapReduce负责分布式计算. MapReduce最早是由Google研究提出的一种面向大规模数据处理的并行计算模型和方 ...

  8. 大数据理论与实践5 分布式计算框架MapReduce和Spark

    MapReduce和Spark MapReduce 简介 原理示例 基本概念 作业运行模式 Spark 简介 概念 编程模型 RDD RDD操作(Operator) RDD依赖(Dependency) ...

  9. Hadoop分布式计算框架MapReduce

    一.MapReduce概述 &源自于Google的MapReduce论文,论文发表于2004年12月 &Hadoop MapReduce是Google MapReduce的克隆版 &a ...

  10. 史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce

    目录 1 MapReduce概述 2 MapReduce编程模型之通过wordcount词频统计分析案例入门 MapReduce执行流程 InputFormat OutputFormat Output ...

最新文章

  1. Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序
  2. 1085 Perfect Sequence
  3. JAVA基础之理解JNI原理
  4. 面向过程和面向对象编程的优缺点
  5. vue设置cookie的domain无效_【Vue.js入门到实战教程】16Tailwind 与 Bootstrap 的区别和使用入门...
  6. python中软件包安装
  7. 无法在web 服务器上启动调试。打开的url的iis辅助进程当前没有运行
  8. SPSS数据录入【SPSS 007期】
  9. Greenrobot-EventBus源码学习(四)
  10. 需求文档(PRD)撰写指南
  11. Uniapp 图片编辑插件 Ba-ImageEditor
  12. 松下a6伺服电机接线图_松下A6伺服电机说明书Part6.pdf
  13. 【实战】SpringBoot整合多数据源
  14. APP开发项目团队成员要求及职责
  15. 计算机系统与外部交换信息主要通过显示器,微机系统与外部交换信息主要通过什么设备...
  16. leetcode之Kth Largest Element in an Array
  17. 2021级程序设计ICODING答案分享
  18. python调用笔记本摄像头
  19. 对不起,我只要爱马仕人生
  20. 网易2017校园招聘笔试题 跳石板

热门文章

  1. hive根据已有表创建新表_读取Hive中所有表的表结构,并在新Hive库中创建表,索引等...
  2. ubuntu 下codeblocks的相关配置
  3. bs架构与cs架构的区别_性能测试流程5步走:BS架构和CS架构性能指标大对比
  4. admixture软件_使用ADMIXTURE进行群体结构分析
  5. 【2019西安邀请赛热身赛C:】python算数表达式求值+模拟int溢出
  6. java radix sort_Java RadixSort
  7. 算法: 删除链表中的数据Remove Linked List Elements
  8. 要连plsql是不是要装oracle,PLSQL直接连接数据库,不装ORACLE
  9. 多个 本地仓库_老板逼我用 Git,本地指令介绍
  10. 前端为什么有的接口明明是成功回调却执行了.catch失败回调_前端战五渣学JavaScript——Promise...