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已经在这两方面展开工作,初步的设计文档已经发布,具体可参考:https://issues.apache.org/jira/browse/YARN-2139和https://issues.apache.org/jira/browse/YARN-2140。IO资源的隔离比CPU和内存复杂的多,为了便于用户量化IO资源,YARN仿照“虚拟cpu”的概念,引入了“虚拟磁盘”(vdisk),第一阶段将尝试使用cgroup的blkio模块实现磁盘IO隔离。当然,在实现该功能之前,还需要将IO资源加入调度器管理的范畴,使得hadoop中的资源调度器,比如公平调度器或者容量调度器,可以对磁盘IO和网络IO进行调度。
Yarn的资源隔离机制的更多相关文章
- Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案
注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明. Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...
- 资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统
资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是资源隔离 资源隔离是指为不同任务提供可独立使用的计算资源以 ...
- Hadoop Yarn 框架原理及运作机制及与MapReduce比较
Hadoop 和 MRv1 简单介绍 Hadoop 集群可从单一节点(其中所有 Hadoop 实体都在同一个节点上运行)扩展到数千个节点(其中的功能分散在各个节点之间,以增加并行处理活动).图 1 演 ...
- Hadoop YARN资源隔离技术
YARN对内存资源和CPU资源采用了不同的资源隔离方案.对于内存资源,它是一种限制性资源,它的量的大小直接决定应用程序的死活,因为应用程序到达内存限制,会发生OOM,就会被杀死.CPU资源一般用Cgr ...
- 利用yarn多队列实现hadoop资源隔离
大数据处理离不开hadoop集群的部署和管理,对于本来硬件资源就不多的创业团队来说,做好资源的共享和隔离是很有必要的,毕竟不像BAT那么豪,那么怎么样能把有限的节点同时分享给多组用户使用而且互不影响呢 ...
- Impala源码之资源管理与资源隔离
本文由 网易云发布. 前言 Impala是一个MPP架构的查询系统,为了做到平台化服务,首先需要考虑就是如何做到资源隔离,多个产品之间尽可能小的甚至毫无影响.对于这种需求,最好的隔离方案无疑是物理机 ...
- hystrix完成对redis访问的资源隔离
相对来说,考虑的比较完善的一套方案,分为事前,事中,事后三个层次去思考怎么来应对缓存雪崩的场景 1.事前解决方案 发生缓存雪崩之前,事情之前,怎么去避免redis彻底挂掉 redis本身的高可用性,复 ...
- Docker 容器资源隔离 namespace(十)
目录 一.简介 Linux Namespace的6大类型 二.Mount Namespace 三.IPC Namespace 四.Network Namespace 五.UTS Namespace 六 ...
- 混部之殇-论云原生资源隔离技术之CPU隔离(一)
作者 蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. 导语 混部,通常指在离线混部(也有离在线混部之说 ...
随机推荐
- Redis单机安装
安装过程 安装环境 ubuntu14.04 server wget http://download.redis.io/releases/redis-3.2.5.tar.gz tar -xzvf ./r ...
- hdu 4717(三分) The Moving Points
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 n个点,给出初始坐标和移动的速度和移动的方向,求在哪一时刻任意两点之间的距离的最大值的最小. 对于最 ...
- Yii2-设置和获取、删除Cookies空值分析(有代码)
Yii2-设置和获取,删除Cookies空值或值没有变化 原因: 1.不要使用相同的request url, 否则需要刷新才能获取值 可在不同的动作中设置和调用 2.不要在函数中使用exit来中止脚本 ...
- phpstudy报告80端口被占用
将所有的80端口修改为81后重启,还是不行
- 纯css导航栏下划线
.nav-underline > *{/* 指定容器,里面可以是li.span等多样化的元素 */ display: inline-block; margin: -3px; padding: 1 ...
- rsync (转载)
rsync 编辑 rsync是类unix系统下的数据镜像备份工具——remote sync. 目录 1简介 2特性 3操作流程 ▪ 服务器端启动 ▪ 客户端同步 4安装 1简介编辑 rsy ...
- ECLIPSE使用HG插件去上载 GOOGLE.CODE下的代码
ECLIPSE使用HG插件去上载 GOOGLE.CODE下的代码 www.MyException.Cn 发布于:2012-09-10 22:20:12 浏览:112次 0 ECLIPSE使 ...
- HACK字体安装
参考:https://github.com/source-foundry/Hack Linux的 下载最新版本的Hack. 从存档中提取文件(.zip). 将字体文件复制到系统字体文件夹(通常/usr ...
- Linux学习笔记:Jenkins安装
操作系统是CentOS 7,安装Jenkins 首先安装jdk,可在Oracle jdk和Openjdk中任选其一安装Oracle jdk步骤见: https://www.cnblogs.com/ ...
- 2018.10.23 hdu2476String painter(区间dp)
传送门 一道挺妙的区间dp. 我们先用区间dp求出第一个串为空串时的最小代价. 然后再加入原本的字符更新答案就行了. 代码: #include<bits/stdc++.h> using n ...