yarn的学习之1-架构
本文翻译自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 --有向无环图
参阅:
- https://en.wikipedia.org/wiki/Directed_acyclic_graph
- http://baike.baidu.com/item/%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE
dag图相对比较简单,适合yarn的作业结构,如果太复杂,实现起来有点困难,而且目前暂时没有那个必要。一个有向有环图更可能用于流程处理。
图1-yarn框架

译注:在上图中,有两个客户,分别提交了一个作业。yarn集群的组件分布在4个节点上,其中一个运行rm,另外三个运行nm。am则运行在两个数据节点上,分别用于关于关于两个客户的需求。
- 紫色客户的应用主程序运行在右上节点,但它的工作实际中右边中间一个节点执行。
- 粉褐客户的应用主程序运行在右中节点,实际工作分布在右上和右下两个节点上。
- 粉褐客户的资源需求大体是紫色的两倍。
- 注意:一个节点上可以有多个容器
nm必须和dn运行在一起,可以方便地收集dn的资源信息。
资源管理器
资源管理器有两个主要的部分:作业调度器和应用主程序.
作业调度器
作业调度器负责为应用分配资源(译注,如果是这么说,也许理解为资源调度器,就好比生活中火车调度站-负责为每个商业合同分配车皮)。
调度器不监控也不追踪应用的状态。
调度器不保证任务的成功,不管任务是因为由于应用还是硬件的故障。
调度器根据应用的资源需求,执行调度功能;它仅仅工作于资源容器上,后者包含诸如内存,cpu,磁盘和网络等等。
调度器具有一个可拔插的策略--根据不同队列,应用等,把集群资源进行划分。当前版本的调度器具有CapacityScheduler 和 FairScheduler 这两个策略。
译注:
- CapacityScheduler--容量调度器,大体可以理解为根据要求来分配资源。了解这个很重要,因为不是所有客户的需求都是一样的,需要分轻重缓急。
- FairScheduler--公平到调度器,大体可以理解为所有的应用的资源需求都是一致的。
应用主程序
应用主程序负责接收作业提交,并找到第一个可用的容器,如果容器有故障,能重启容器。此外am还负责从调度器中获得资源,并追踪和监测任务。
资源预订(resource reservation)
yarn支持预订系统(ReservationSystem),用户可以提前预定资源,这样保留出来的资源可以用于执行一些重要的作业。
预订系统不停地追踪资源,处理预订,并不时提醒调度器,让后者确保所有的预订能够得到满足。
译注:yarn的预订,不失为一个有趣有用的功能。很多系统中,这些功能的实现,主要靠认为操作来实现。
yarn的学习之1-架构的更多相关文章
- ML平台_小米深度学习平台的架构与实践
(转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...
- JavaWeb学习之三层架构实例(三)
引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...
- yarn的学习-1-包管理工具
https://yarn.bootcss.com 使用yarn的原因: 1.速度超快 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载以最大化资源利用率,因此安装速度更快 ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...
- Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用
Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...
- YARN学习总结之架构
一.yarn产生背景 1) 源于MRv1的缺陷:扩展性受限.单点故障.难以支持MR之外的计算框架: 2) 多计算框架各自为战,数据共享困难,资源利用率低: MR: 离线计算框架 Storm:实时计算框 ...
- Yarn介绍(设计理念与基本架构)
Yarn : 新的计算框架,是一个全局资源管理器,负责整个集群的资源管理和分配 一. Yarn产生背景 Hadoop1.0MR有局限性,概括为以下几个方面 : 扩展性差 可靠性差 资 ...
- JAVA NIO学习笔记1 - 架构简介
最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...
- GreenPlum学习之(Share-nothing)架构
当今世界是一个信息化的世界,我们的生活中无论是生活.工作.学习都离不开信息系统的支撑.而信息系统的背后用于保存和处理最终结果的地方就是数据库.因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问 ...
- JavaWeb学习之三层架构实例(二)
引言 这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...
随机推荐
- Java集合篇三:Vector
package com.test.collection; import java.util.Vector; public class MyVector { /** * @param args */ p ...
- C#程序的编译和执行
1.在讲解 C# 程序的编译与执行之前,首先了解以下两个概念,以便充分理解C# 程序的运行. CLI--Common Language Infrastructure 的简称,C# 程序在Microso ...
- requireJS基本配置相关
requireJS: (1)实现js文件的异步加载,避免页面失去响应: (2)管理模块之间的依赖性,便于代码的编写和维护. 加载: <script src="js/require.js ...
- Mantis查看问题列表的列名修改_"P","#"两列
在使用mantis的时候,点击菜单上的“查看问题”进去,就会罗列出当前的bug列表,可是列表的标题上存在着“P”和“#”的显示,个人觉得这两列在这里完全没有意义,或者说现有的显示使人觉得疑惑,究竟代表 ...
- 別人寫的git的總結,寫自己這裡學習用
這裡是原文,http://www.cnblogs.com/ang-/p/7352909.html 貼這裡慢慢學. git入门大全 阅读目录 前言 基本概念 文件几种状态 创建新仓库 配置 检出仓库 ...
- piranha配置
典型的高可用负载均衡 1)lvs + ldirectord + heartbeat lvs(ipvsadmin) 调度器,将用户请求分发到后端真实服务器,不负责健康检查 ldirectord 服务监控 ...
- java--内存管理的几点小技巧
今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以免以后忘记. 1.尽量使用直接量.比如:String str = "I can play!";而不是 ...
- Perl 基础笔记: 使用 cpanm 安装 Perl 模块
cpanm 其实只是一个可执行文件而已.将它下载到 bin 目录,然后添加执行权限就可以用了. $ sudo wget http://xrl.us/cpanm -O /usr/bin/cpanm; s ...
- Android开发经验01:31个Android开发实战经验
1. 在Android library中不能使用switch-case语句访问资源ID:在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案 2. 不能 ...
- 课堂笔记-------字符串类型string------练习
字符串类型 一.string //打出s.时就会出现一堆的方框,要找不带箭头的(不带箭头的是我们现在可以用的到的),不要找带箭头的(带箭头的是扩展,现在还用不到) //不带箭头的都是对s的操作(动作和 ...