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表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...
随机推荐
- owin解决跨域js请求
最近在用owin打了一个建议的http的api服务,但遇到了js跨域访问的问题,后来在网上找到了答案,已帮助遇到此问题的人 1.首先nuget先按着owin依赖的包,然后至关重要的一步是引用Micro ...
- MonkeyRunnermac
http://blog.csdn.net/wyb199026/article/details/51436754 背景 之前想学习自动化测试的时候,就研究过MonkeyRunner,说实话MonkeyR ...
- BIEE入门(三)业务模型层
正如它的名字所示(Business Model and Mapping Layer),业务逻辑层需要把物理层的数据源以一种业务用户的视角来重新组织物理层的各个数据源(所谓的Mapping),同时在业务 ...
- Hive的UDF(用户自定义函数)开发
当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function). 测试各种内置函数的快捷方法: 创建一个 dual 表 ...
- 收缩事务日志(sqlserver)
sqlserver数据库的日志文件其实是由很多个逻辑上的日志文件组成,我们可以通过命令看一下数据库日志文件 可以看到的是sqlserver数据库日志文件是由很多文件组成的,当数据库日志文件已满的时候 ...
- em px 换算在线工具
网址: http://pxtoem.com/#help http://www.runoob.com/tags/ref-pxtoemconversion.html
- python编写的简单的mysql巡检脚本
准备工作:1 安装python 3.5,本次使用源码安装.2 安装psutil模块,使用python3.5自带的easy_install包直接运行cd /opt/python3/bin./ ...
- 限定filesize的数据泵导入导出操作案例
使用如下方法导入导出expdp sh/sh dumpfile=ycr_%U.dump directory=exp filesize=2mimpdp sh/sh dumpfile=ycr_%U.dump ...
- TP5.0:跳转链接到某控制器下的某方法
语法:{:url('控制器名/方法名')} 例如: 结果: 以上 END
- 【转】android Looper 理解
在主线程中运行的部分,都可以直接使用Handler,因为在主线程启动的过程中(ActivityThread的main函数里)会调用Looper.prepareMainLooper(),Looper类中 ...