本文翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-yarn/hadoop-yarn-site/YARN.html

译注:原文说得有些过于简单的,并且有些混乱。

yarn由两个部分的守护程序构成:资源管理、调度/监控。

这样就要求有个全局资源管理器(resoureManager-rm)和与应用一一对应的管理程序(applicationMaster-am).

一个应用要么是一个作业,要么就是由作业构成的dag(多个job--多个job)

Yarn的数据计算框架由rm和节点管理器(nodemanager -nm)构成.rm负责管理所有应用的资源。nm其实是容器的代理,负责监控资源使用(cpu,内存,磁盘,网络),并向rm/调度器报告有关信息。

am从rm获取资源,并和nm协调工作,执行和监控任务。

译注: dag-directed acycli graph --有向无环图

参阅:

dag图相对比较简单,适合yarn的作业结构,如果太复杂,实现起来有点困难,而且目前暂时没有那个必要。一个有向有环图更可能用于流程处理。

图1-yarn框架

译注:在上图中,有两个客户,分别提交了一个作业。yarn集群的组件分布在4个节点上,其中一个运行rm,另外三个运行nm。am则运行在两个数据节点上,分别用于关于关于两个客户的需求。

  • 紫色客户的应用主程序运行在右上节点,但它的工作实际中右边中间一个节点执行。
  • 粉褐客户的应用主程序运行在右中节点,实际工作分布在右上和右下两个节点上。
  • 粉褐客户的资源需求大体是紫色的两倍。
  • 注意:一个节点上可以有多个容器

nm必须和dn运行在一起,可以方便地收集dn的资源信息。

资源管理器

资源管理器有两个主要的部分:作业调度器和应用主程序.

作业调度器

作业调度器负责为应用分配资源(译注,如果是这么说,也许理解为资源调度器,就好比生活中火车调度站-负责为每个商业合同分配车皮)。

调度器不监控也不追踪应用的状态。

调度器不保证任务的成功,不管任务是因为由于应用还是硬件的故障。

调度器根据应用的资源需求,执行调度功能;它仅仅工作于资源容器上,后者包含诸如内存,cpu,磁盘和网络等等。

调度器具有一个可拔插的策略--根据不同队列,应用等,把集群资源进行划分。当前版本的调度器具有CapacitySchedulerFairScheduler  这两个策略。

译注:

  • CapacityScheduler--容量调度器,大体可以理解为根据要求来分配资源。了解这个很重要,因为不是所有客户的需求都是一样的,需要分轻重缓急。
  • FairScheduler--公平到调度器,大体可以理解为所有的应用的资源需求都是一致的。

应用主程序

应用主程序负责接收作业提交,并找到第一个可用的容器,如果容器有故障,能重启容器。此外am还负责从调度器中获得资源,并追踪和监测任务。

资源预订(resource reservation)

yarn支持预订系统(ReservationSystem),用户可以提前预定资源,这样保留出来的资源可以用于执行一些重要的作业。

预订系统不停地追踪资源,处理预订,并不时提醒调度器,让后者确保所有的预订能够得到满足。

译注:yarn的预订,不失为一个有趣有用的功能。很多系统中,这些功能的实现,主要靠认为操作来实现。

yarn的学习之1-架构的更多相关文章

  1. ML平台_小米深度学习平台的架构与实践

    (转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...

  2. JavaWeb学习之三层架构实例(三)

    引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...

  3. yarn的学习-1-包管理工具

    https://yarn.bootcss.com 使用yarn的原因: 1.速度超快 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载以最大化资源利用率,因此安装速度更快 ...

  4. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  5. Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用

    Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...

  6. YARN学习总结之架构

    一.yarn产生背景 1) 源于MRv1的缺陷:扩展性受限.单点故障.难以支持MR之外的计算框架: 2) 多计算框架各自为战,数据共享困难,资源利用率低: MR: 离线计算框架 Storm:实时计算框 ...

  7. Yarn介绍(设计理念与基本架构)

    Yarn : 新的计算框架,是一个全局资源管理器,负责整个集群的资源管理和分配   一. Yarn产生背景       Hadoop1.0MR有局限性,概括为以下几个方面 :  扩展性差 可靠性差 资 ...

  8. JAVA NIO学习笔记1 - 架构简介

    最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...

  9. GreenPlum学习之(Share-nothing)架构

    当今世界是一个信息化的世界,我们的生活中无论是生活.工作.学习都离不开信息系统的支撑.而信息系统的背后用于保存和处理最终结果的地方就是数据库.因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问 ...

  10. JavaWeb学习之三层架构实例(二)

    引言 这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...

随机推荐

  1. Cocos2d-js 开发记录:声音播放

    声音播放可以使用cc.audioEngine,需要播放的文件在resource.js中进行添加如: button_press_mp3: "res/audio/press.mp3", ...

  2. shell 复制/备份文件 脚本

    #!/bin/sh # author hapday # -- echo "以时间日期为名称基准备份 war 包." date +%Y-%m-%d-%H-%M-%S cp artup ...

  3. 防反编译、混淆文件proguard.cfg与proguard-project.txt详解

    在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. 如果需要对项目进行全局混码,只需要进行一步操 ...

  4. CSS3中的变形与动画(一)

    CSS3变形篇 旋转rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中 ...

  5. Qt之QSS(Q_PROPERTY-自定义属性)

    版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣.好玩.靠谱...作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820   目录(?)[+]   ...

  6. 使用sqlloader向oracle导入文本数据

    文本文件如下,注意文件名必须有后缀,文本行首也需要|分隔符:[oracle@ycr test]$ more person.txt|aaa|123|m|aaa|123|m|aaa|123|m|aaa|1 ...

  7. February 23 2017 Week 8 Thursday

    In order to be irreplaceable, one must always be different. 想要无可取代,必须与众不同. In recent days, a news ab ...

  8. Android开发最佳学习路线图(转)

    Android开发总体路线图:  基础学习——JavaSE:        很多朋友一上手就开始学习Android,似乎太着急了一些. Android应用程序开发是以Java语言为基础的,所以没有扎实 ...

  9. xml 转义特殊字符

    写了个request2XML的方法,每当数据中有'<'.'&'符号时,封装的XML就无法解析.发现了XML里的CDATA属性,问题迎刃而解!在XML文档中的所有文本都会被解析器解析. 只 ...

  10. C++ 数据库 char 转 wchar_t SQLWCHAR

    C++中对数据库的操作感觉太复杂了,不如C#好使,但最近出于某些原因还是学习了一下C++下操作数据库的方法. 如果要想用C++实现对数据库的操作其实很简单,但是如果你需要动态的操作数据库(比如获得用户 ...