浅谈Hadoop YARN资源隔离机制

编者按:Hadoop  YARN同时支持内存和CPU两种资源的调度,在YARN中,资源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离。本文董西城将会介绍YARN在资源隔离方面的一些进展。

作者原文:

资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由ResourceManager完成,而资源隔离由各个NodeManager实现,在文章“Hadoop YARN中内存和CPU两种资源的调度和隔离”中,我已经介绍了YARN的内存和CPU的资源隔离,本文将介绍YARN在资源隔离方面的一些进展。

当谈及到资源时,我们通常指内存,CPU和IO三种资源。默认情况下,YARN不会对任何资源进行隔离,当然,如果采用Java语言编写的程序,则会使用JVM内置的隔离机制为内存资源进行隔离。随着YARN的逐步完善,在内存,CPU和IO三种资源隔离方面均有重大进展。

首先介绍内存资源隔离。内存资源是YARN从一开始就会管理和调度的资源,考虑到内存资源的特殊性,YARN并没有显式地对内存资源进行强制隔离,以免在产生内存抖动时,任务被不优雅地杀掉。当然,如果你采用了Java语言编写了任务,则可以使用JVM提供的内存隔离机制,这是一种不错的选择。对于YARN而言,目前所做的工作是监控每个任务的进程树,如果每个任务的进程树使用的总物理内存或者总虚拟内存量超过了预先设置值,则依次发送TERM和KILL两个信号将整个进程树杀死。如果你在YARN上运行了一些特殊的任务或者服务,希望使用Cgroups对内存进行严格的隔离,可以关注:https://issues.apache.org/jira/browse/YARN-1856

接下来介绍CPU资源隔离。CPU资源调度从Hadoop 2.2.0开始已经得到了完好的支持,但CPU资源隔离支持的很不好,目前已经完成或者正在做的工作如下;

(1)CPU资源按照百分比进行使用和隔离。通过Cgroup的cpu.shares参数实现的,这种方式能够保证每个节点上的cpu资源得到充分的共享和使用,从而产生较高的CPU利用率。从hadoop 2.2.0开始已经得到了支持,但是要启用这个功能,还需经过较为复杂的参数配置和调整,相关jira为:https://issues.apache.org/jira/browse/YARN-3

(2)限制每个container的CPU资源使用上限。上一一种CPU隔离方式能够保证每个Contaienr的CPU使用下限,大部分情况下,可能拿到比自己期望的多的CPU资源;而这种隔离则不同,它会严格限制cpu使用上限,比如你希望使用2个CPU,则会限制你只能使用2个,不能多用,即使同机器上仍有大量空闲CPU资源,也不会允许你使用。该功能是通过Cgroup的cpu.cfs_quota_us和cpu.cfs_period_us两个参数实现的,目前已经有可使用的patch,但尚未merge到主干中,具体参考:https://issues.apache.org/jira/browse/YARN-810

(3)限制yarn使用的CPU上限。实现机制与(2)相同,已有可使用的patch,具体参考:https://issues.apache.org/jira/browse/YARN-2440

需要注意的是,YARN允许你配置每个节点上可使用的物理cpu个数,以及物理cpu与虚拟cpu个比例,而用户申请资源时,只能申请虚拟cpu。默认情况下,物理cpu和虚拟cpu是1:1的,如果你的集群是异构的,某些节点上的CPU拥有更强的计算能力,则可以调整物理cpu和虚拟cpu的比例。虚拟cpu的概念是借鉴“物理内存和虚拟内存”的,主要目的是消除集群中cpu计算能力的异构性。

最后介绍IO资源。IO资源分为磁盘IO和网络IO两种。目前YARN已经在这两方面展开工作,初步的设计文档已经发布。IO资源的隔离比CPU和内存复杂的多,为了便于用户量化IO资源,YARN仿照“虚拟cpu”的概念,引入了“虚拟磁盘”(vdisk),第一阶段将尝试使用cgroup的blkio模块实现磁盘IO隔离。当然,在实现该功能之前,还需要将IO资源加入调度器管理的范畴,使得hadoop中的资源调度器,比如公平调度器或者容量调度器,可以对磁盘IO和网络IO进行调度。(责编/刘亚琼)

原文链接:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-resource-isolation/

时间: 2024-09-16 13:19:15

浅谈Hadoop YARN资源隔离机制的相关文章

浅谈Javascript线程及定时机制

  这篇文章主要介绍了浅谈Javascript线程及定时机制的相关资料,需要的朋友可以参考下 setTimeout.setInterval的使用 Javascript api文档中定义setTimeout和setInterval第二个参数意义分别为间隔多少毫秒后回调函数被执行和每隔多少毫秒回调函数被执行.但随着工作经验的积累,我们发现事实并非如此. 比如 ? 1 2 3 4 5 div.onclick=function(){ setTimeout(function(){ document.get

浅谈校内BT资源站的运营推广:运营篇

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近有幸参与到某高校校内BT资源站的运营组,和团队一起运营这个新站.今天笔者将谈谈对于这种站运营的一些想法. 这是一个校内的站,校内的局域网环境对于做这类网站是很有优势的,局域网内的客户端之间传输东西的速度很快.同学们日常生活中,看电影和连续剧是最好的娱乐方式之一.运营这样一个网站,运营方必须具备以下的一些条件. 一.校内服务器工作环境 这一

浅谈JavaScript的自动垃圾收集机制_javascript技巧

执行环境会负责管理代码执行过程中使用的内存,编写JavaScript程序时,所需内存的分配以及无用内存的回收完全实现自动管理. 原理: 找出那些不再继续使用的变量,然后释放其占用的内存.为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)周期性地执行这一操作. 垃圾收集的方式: 1.标记清除(mark-and-sweep) 最常用的垃圾收集方式.当变量进入环境时,就将变量标记为"进入环境".从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,

浅谈Hadoop生态系统

大数据在2014年逐渐爆发,越来越多的企业发现了大数据的用途,不仅可以用来管理每天的业务流程,还能解决复杂的商业问题.大数据很快跃升为热点词,并将自己打造成可以解决大大小小商业实体问题的可靠技术. 大数据,顾名思义,就是在我们周围存在的巨大量级数据,这些数据可以是在智能设备.互联网.社交媒体.聊天室.移动APP.电话呼叫.商品购买等一系列使用活动中产生.大数据技术就是用来收集.存储和分析这些量级(一般达到拍字节)的信息. 大数据技术彻底改变了人们看待数据和数据库存储的方式,颠覆了数据的使用方法.

浅谈Linux的内存管理机制

一 物理内存和虚拟内存 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念. 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space). 作为物理内存的扩展,linux会在物理内存不足时,使用交换

浅谈Hadoop系统架构与海量数据分析

微软近日宣布开发一个兼容Windows Server与Windows Azure平台的Hadoop开源版本.IBM宣布在Hadoop上建立新的存储架构,作为群集运行DB2或Oracle数据库,目的是让应用程序,支持高性能分析,数据仓库应用程序和云计算的目的.EMC也推出了世界上第一个定制的.高性能的Hadoop专用数据协同处理设备--Greenplum HD数据计算设备,为客户提供了最强大.最高效率的方法,充分挖掘大数据的价值.互联网搜索巨头百度也在考虑使用Hadoop.不过,出于性能与安全的考

浅谈Java生命周期管理机制_java

先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然只写以下几行代码,于是我感觉瞬间受到了很多伤害. public static void main(String[] args) { System.out.println(new Date() + ",server shutdown!"); } 这个中间件启动和运行的时候,开启了监听,启动着

浅谈外链资源 合理的饲养发挥更大的作用

外链是一个网站不可或缺的一部分,不管是什么网站都是如此,只是网站类型的不同,获取方法不一样而已,比如个人站长的网站,只能通过自己手动去发布,而一些权威的网站,刚建立或许就能获取很多高权重的单项链接;权重越高当然对于关键词的排名就越有利,从现在seo的优化方向来看,外链这块是一个不可割舍的一部分,很多竞争的网站,拼的就是外链,看谁的外链比较强悍,谁就能笑到最后. 对于很多seoer来说对外链资源这块,主要的积累方法就是搜集一些能发外链的论坛.创建免费的博客.另外就是一些写作平台,这些都是免费的,只

浅谈浏览器http的缓存机制

针对浏览器的http缓存的分析也算是老生常谈了,每隔一段时间就会冒出一篇不错的文章,其原理也是各大公司面试时几乎必考的问题. 之所以还写一篇这样的文章,是因为近期都在搞新技术,想"回归"下基础,也希望尽量总结的更详尽些. 那么你是否还需要阅读本篇文章呢?可以试着回答下面这个问题: 我们在访问百度首页的时候,会发现不管怎么刷新页面,静态资源基本都是返回 200(from cache): 随便点开一个静态资源是酱的: 哎哟有Response报头数据呢,看来服务器也正常返回了etag什么鬼的