一、概述
Hadoop-2.6.0中对CPU CGroups的实现,主要是通过CgroupsLCEResourcesHandler来实现的,通过它的int*()系列方法初始化一些参数和环境,比如CGroups的路径等,然后在启动容器内的可执行文
件前由LinuxContainerExecutor调用preExecute()方法,进行setupLimits()即设置限额操作,而在容器内的可执行退出后(无论成功还是失败)由LinuxContainerExecutor调用postExecute()方法,进行
clearLimits()即清除限额操作。
二、实现细节
1、CgroupsLCEResourcesHandler配置
通过参数yarn.nodemanager.linux-container-executor.resources-handler.class配置
配置为org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler即可
参数默认值是org.apache.hadoop.yarn.server.nodemanager.util.DefaultLCEResourcesHandler。
2、setupLimits()核心实现
参见如下代码注释:
3、clearLimits()核心实现
参见如下代码注释: