YARN对内存资源和CPU资源采用了不同的资源隔离方案。对于内存资源,它是一种限制性资源,它的量的大小直接决定应用程序的死活,因为应用程序到达内存限制,会发生OOM,就会被杀死。CPU资源一般用Cgroups进行资源控制,Cgroups控制资源测试可以参见这篇博文Cgroups控制cpu,内存,io示例,内存资源隔离除Cgroups之外提供了另外一个更灵活的方案,就是线程监控方案。

默认情况下YARN采用线程监控的方案控制内存使用,采用这种机制的原因有两点:

  • 1.Java创建子进程采用了“fork()+exec()”的方案,子进程启动的瞬间,它使用的内存量和父进程一致。一个进程使用的内存量可能瞬间翻倍,然后又降下来,采用线程监控的方法可防止这种情况下导致的swap操作。
  • 2.通常情况下,Hadoop任务运行在独立的Java虚拟机中,可以达到资源隔离的目的。Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,通过Hadoop Streaming编写的MapReduce应用程序中每个任务可以由不同的编程语言环境组成,这难以通过创建单独的虚拟机达到资源隔离的效果。

综上,为了获取更加灵活的资源控制效果,Hadoop对内存的资源隔离采用线程监控方案。解决方案具体如下:

  • 1.linux系统的/proc/<pid>/stat文件,实时的反应进程树使用的内存总量,可以基于此判断任务粒度的内存使用量是否超过设定的最大值。getconf PAGESIZE可以获取page大小。
  • 2.为了避免JVM的“fork()+exec()”模型引发的误杀操作,Hadoop赋予每个进程”年龄”属性,并规定刚启动进程的年龄是1,监控线程每更新一次,各个进程年龄加1,在此基础上,选择被杀死进程组的标准如下:如果一个进程组中所有的进程(年龄大于0)总内存超过用户设置的最大值的两倍,或者所有年龄大于1的进程总内存量超过用户设置最大值,则认为该进程组过量使用内存,就将其kill掉。

这种细粒度,更加灵活的线程监控资源隔离方案,还是值得学习与称道的,记录于此,以后设计系统可以参考。

参考:

《Hadoop技术内幕--深入解析YARN架构设计与实现原理》

http://blog.csdn.net/zjl_1026_2001/article/details/2294067

http://dongxicheng.org/mapreduce/hadoop-streaming-programming/

Hadoop YARN资源隔离技术的更多相关文章

  1. 资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统

    资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是资源隔离 资源隔离是指为不同任务提供可独立使用的计算资源以 ...

  2. 混部之殇-论云原生资源隔离技术之CPU隔离(一)

    作者 蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. 导语 混部,通常指在离线混部(也有离在线混部之说 ...

  3. Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案

    注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明.   Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...

  4. Hadoop - YARN NodeManager 剖析

    一 概述         NodeManager是执行在单个节点上的代理,它管理Hadoop集群中单个计算节点,功能包含与ResourceManager保持通信,管理Container的生命周期.监控 ...

  5. Hadoop Yarn REST API未授权漏洞利用挖矿分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 一.背景情况 5月5日腾讯云安全曾针对攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未 ...

  6. hadoop yarn组件介绍

    Yarn的产生 mapReduc1.0 1单点故障 2扩展效率低 3资源利用率高 降低运维成本 方便数据共享 多计算框架支持 MapReduce Spark Storm Yarn的架构图 Yarn模块 ...

  7. 利用yarn多队列实现hadoop资源隔离

    大数据处理离不开hadoop集群的部署和管理,对于本来硬件资源就不多的创业团队来说,做好资源的共享和隔离是很有必要的,毕竟不像BAT那么豪,那么怎么样能把有限的节点同时分享给多组用户使用而且互不影响呢 ...

  8. Yarn的资源隔离机制

    源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能.资源调度由ResourceManager完成,而资源隔离由各个NodeManager实现,在文章“Hadoop YARN中内存 ...

  9. 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制

    转自:https://m.aliyun.com/yunqi/articles/79700 背景 使用过hadoop的人基本都会考虑集群里面资源的调度和优先级的问题,假设你现在所在的公司有一个大hado ...

随机推荐

  1. 苹果的软件/系统盘 网站 http://www.panduoduo.net/u/bd-369186934/2

    http://www.panduoduo.net/u/bd-369186934/2

  2. Android xml text 预览属性

    只在 AS 中生效 xmlns:tools="http://schemas.android.com/tools" tools:text="I am a title&quo ...

  3. 1.5 STL中大小相等的概念

    1) 2)

  4. APP测试流程(个人整理)

  5. iOS 判断第一个字符是数字还是汉字

       NSString *titleStr = @"琳小兮";  //先截取字符串,拿到第一个字符         NSString *firstStr = [titleStr s ...

  6. 前端模板artTemplate,handlerbars的使用心得

    写前端页面肯定离不开模板渲染,就近期项目中用的两个前端模板做一些使用总结,顺便复习一下,也方便后面温故. 1,artTemplate 优点: 1,一般web端用得较多,执行速度通常是 Mustache ...

  7. Tabular Model下的ADOMD.NET

    ADOMD.NET是一套对象架构体系,它包含需要向SSAS数据库做访问的一切支持的对象和方法.很多微软官方以及第三方的SSAS客户端应用都是通过这个对象来操作数据. 多维模式的ADOMD.NET在我以 ...

  8. select * from salgrade for update和select * from salgrade for update nowait区别

    1,select * from salgrade for update session1 session2 SQL> delete salgrade where grade=1; 1 row d ...

  9. css3 妙味

    css3 属性 <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...

  10. Macbook Pro安装win7

    1.进入OS X系统,在实用工具中打开Boot Camp助理 2.用磁盘工具对磁盘进行分区,将需要安装win7的分区格式化成FAT格式 3.用Boot Camp对磁盘进行分割,然后插入win7的安装光 ...