前言
众所周知,目前YARN所支持的资源类型主要有2两大类:内存和CPU.但是其实对于操作系统层面,还有一个重要的资源是没有被YARN考虑在内的,就是IO资源,这里的IO资源你可以理解为比如说存储空间的容量,但是它其实也可以有其它的含义。目前YARN这种不考虑IO资源状况的调度方式,会造成有些container会消耗大量的IO资源,尽管可能他们只用了一点点的,内存和CPU资源。所以把IO资源也作为YARN调度的一个需求条件之一,是一个大有好处并且有其使用场景的功能点。
IO资源的概述
刚刚在上文已经提过了,这里的IO资源并不仅仅是指磁盘容量空间,它还可以是一种别的能力,比如说iops(每秒io次数),带宽等等。只是说,为了方便理解,我们暂且以磁盘空间作为一个节点IO资源的表示,磁盘空间越多,代表其所能处理的io次数也自然比较多。
YARN基于IO资源的调度和隔离
这里我们主要关注2点:
- 一个是IO资源的调度,这个调度关注的点主要是防止io资源的过度分配,导致过载的问题。
- 还有一个是IO隔离的问题。类似于CPU使用的隔离,我们同样要保证一定的IO资源使用隔离,防止不同用户应用的相互干扰。
IO资源的调度
IO资源的调度在YARN层面,我们想让IO也作为其中的一个判断条件,就要把它也作为一个资源field,比如我们这里用vdisk来表示需要的IO资源,vdisk越大,表示需要的IO资源越多,新的资源请求实例对象定义