YARN

YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操作系统,通过它的api编写的应用可以跑在它上面,支持临时和常驻的应用,集群的资源可以得到最大限度的共享。资源是指CPU,内存,硬盘,带宽等可以量化的东西。

YARN 概述

YARN 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操 作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序

YARN 是 Hadoop2.x 版本中的一个新特性。它的出现其实是为了解决第一代 MapReduce 编程 框架的不足,提高集群环境下的资源利用率,这些资源包括内存,磁盘,网络,IO等。Hadoop2.X 版本中重新设计的这个 YARN 集群,具有更好的扩展性,可用性,可靠性,向后兼容性,以 及能支持除 MapReduce 以外的更多分布式计算程序

  1、YARN 并不清楚用户提交的程序的运行机制

  2、YARN 只提供运算资源的调度(用户程序向 YARN 申请资源,YARN 就负责分配资源)

  3、YARN 中的主管角色叫 ResourceManager

  4、YARN 中具体提供运算资源的角色叫 NodeManager

  5、这样一来,YARN 其实就与运行的用户程序完全解耦,就意味着 YARN 上可以运行各种类 型的分布式运算程序(MapReduce 只是其中的一种),比如 MapReduce、Storm 程序,Spark 程序,Tez ……

  6、所以,Spark、Storm 等运算框架都可以整合在 YARN 上运行,只要他们各自的框架中有 符合 YARN 规范的资源请求机制即可

  7、yarn 就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整 合在一个物理集群上,提高资源利用率,方便数据共享

Hadoop1.0和2.0架构对比

  • 1.0的绝对核心是mapreduce,只能跑mapreduce的任务;2.0的绝对核心是YARN,除了可以跑mapreduce,还可以跑其它各种各样的任务,每个应用向YARN申请资源
  • 1.0的JobTracker和NameNode是单点,一旦挂掉,整个集群会瘫痪;2.0核心组件不再是单点,基于ZooKeeper实现了HA(RM Hadoop2.4版本及后才支持)
  • 2.0没有了JobTracker和TaskTracker,增加了ResourceManager,NodeManager,Application Master,Container
  • 2.0资源使用效率更高,资源使用更加弹性灵活
  • 2.0把资源管理以及调度和任务管理以及调度拆开,使得组件功能变得更简单,程序更加稳定健壮,1.0时都由JobTracker负责
  • 2.0比1.0架构更加复杂了
  • YARN的出现解决了1.0时代设计的缺陷,让Hadoop集群功能越来越完善,让Hadoop集群越来越稳定

YARN架构设计

YARN 作业执行流程:

    1、用户向 YARN 中提交应用程序,其中包括 MRAppMaster 程序,启动 MRAppMaster 的命令, 用户程序等。

    2、ResourceManager 为该程序分配第一个 Container,并与对应的 NodeManager 通讯,要求 它在这个 Container 中启动应用程序 MRAppMaster。

    3、MRAppMaster 首先向 ResourceManager 注册,这样用户可以直接通过 ResourceManager 查看应用程序的运行状态,然后将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复 4 到 7 的步骤。

    4、MRAppMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源。

    5、一旦 MRAppMaster 申请到资源后,便与对应的 NodeManager 通讯,要求它启动任务。

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

    7、各个任务通过某个 RPC 协议向 MRAppMaster 汇报自己的状态和进度,以让 MRAppMaster 随时掌握各个任务的运行状态,从而可以在任务败的时候重新启动任务。

    8、应用程序运行完成后,MRAppMaster 向 ResourceManager 注销并关闭自己。

RM实现HA


(图片来源:hadoop官方文档)

  • 大于等于2.4版本才支持HA
  • RM有2种状态,提供服务的处于Active状态,备份的是Standby状态
  • 通过ZooKeeper协调,实现故障转移
  • RM有内置ZKFC,只需开启配置,不需要单独启动额外的监控进程
  • RM状态信息存储方式:
    1 ZooKeeper
    2 HDFS
    3 本地文件系统,故障转移需要考虑信息如何同步,人工实现故障转移

调度策略

  • FIFO Scheduler(先进先出)
    先来的先执行,如果有任务执行时间长,占用资源多,后面的任务只能等待,即使是执行快,占用资源少的应用,也必须等待那个耗时耗资源的任务执行完
  • Capacity Scheduler(预先分配资源模式)
    N个任务队列,每个队列分配一定资源,每个队列资源互不共享,每个队列只有有权限的人或者组织才能使用。
    如果某些任务队列没有任务,会造成资源的浪费。相比FIFO模式,任务执行时间会变的更长,因为耗时耗资源的应用可用
  • 资源更少了。
  • Fair Scheduler(公平调度模式)
    先来的任务先执行,当有新的任务到来时,虽然上一个任务没有执行完,上一个任务释放的Container优先分配给这个新任务,当新任务执行完成时,释放的资源再给上一个任务使用。
    这样就能达到即不影响耗时的任务又能执行执行新任务的目的。在兼顾公平使用的基础上,最大化利用集群的资源。

pdf文档:https://download.csdn.net/download/weixin_40902527/11377551

[hadoop] hadoop之yarm资源调度相关推荐

  1. Hadoop -- hadoop介绍

    Hadoop hadoop介绍 hadoop核心组件 hadoop特性优点 hadoop发展 hadoop介绍 hadoop底层是Java语言实现 是Apache软件基金会的一款开源软件 允许用户使用 ...

  2. linux如何授权HADOOP,hadoop用户权限管理

    在上一篇博文我描述了在单机linux上安装hadoop,网址:http://my.oschina.net/hetiangui/blog/142897,这里我主要描述下hadoop的用户权限管理. 上篇 ...

  3. Hadoop之Yarm资源调度器

    Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于操作系统之上的应用程序. Yarn的基本架构 YARN 主要是由Res ...

  4. 一起学Hadoop——Hadoop的前世今生

    Hadoop是什么? Hadoop是一个处理海量数据的开源框架.2002年Nutch项目面世,这是一个爬取网页工具和搜索引擎系统,和其他众多的工具一样,都遇到了在处理海量数据时效率低下,无法存储爬取网 ...

  5. [Hadoop] Hadoop学习历程 [持续更新中…]

    1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...

  6. oracle数据如何导入hadoop,hadoop hive 与 Oracle 互相导入数据

    #1.在Oracle上建立要处理的表 create table SOURCE_TABLE_NAME as SELECT t.*,rownum as row_num FROM SOURCE_TABLE_ ...

  7. [Hadoop]Hadoop Archives

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/SunnyYoona/article/details/53889284 1. 什么是Hadoop ar ...

  8. hadoop(hadoop是什么)

    Hadoop是什么 Hadoop是Apache基金会开发的分布式系统基础架构 Hadoop主要被用来解决海量数据的存储和海量数据的分析计算 广义上来说,Hadoop通常是指一个更广泛的概念----Ha ...

  9. Hadoop学习篇(一)——初识Hadoop Hadoop单机配置

    Hadoop学习篇(一) 本文档适用于Hadoop开发学习者使用 说明:如涉及到侵权,请及时联系我,并在第一时间删除文章. Hadoop简介:Hadoop是一个由Apache基金会所开发的分布式系统基 ...

最新文章

  1. .net 返回datatable显示sql列名_3汇总分析-SQL
  2. 祛除雀斑的健康方法 - 健康程序员,至尚生活!
  3. 采样算法哪家强?一个针对主流采样算法的比较
  4. java1.8 lambda表达式_java1.8之Lambda表达式
  5. 02、MySQL—数据库基本操作
  6. 学习前端开发,那你值得css的特点有哪些?
  7. 鼠标点击改变单元格颜色或点击改变行颜色
  8. 初学者小白怎么画猫咪主题插画?该怎么去注意其中的细节?
  9. 从零开始学Snaker(一)- 官方项目运行
  10. This may be due to a lack of SYSV IPC support
  11. 联想网站诊断分析(12.10)
  12. 云服务系列文章(一) 阿里云和AWS
  13. REST API简介
  14. 使用百度echarts制作可视化大屏
  15. ZBrush大师教你如何去做骨骼建模
  16. 三维激光扫描后处理软件_三维激光扫描技术在异形建筑幕墙安装中的应用
  17. ubuntu ROS 创建项目
  18. 对付身体小毛病的80妙招
  19. 树莓派入门(3)树莓派GPIO学习
  20. matlab imshow 两张图

热门文章

  1. 森歌全自动洗碗机、水槽式洗碗机带你开启餐后无忧生活
  2. 翻译英文的软件哪个好?这些软件值得一试
  3. python题目64:求机器绘图面积
  4. APPUI 自动化测试-----常见面试题汇总
  5. linux下的基本命令(六)
  6. vue 实现pdf文件在线预览
  7. 男生学会计专业好还是学计算机专业,计算机和会计哪个难学 哪个更有发展前景...
  8. 友元函数和互为友元类
  9. ForkJoin原理分析
  10. Adobe2021 4月份更新推送