Hadoop YARN启动cgroup进行cpu资源管理

Hadoop YARN启动cgroup进行cpu资源管理,第1张

Hadoop YARN启动cgroup进行cpu资源管理

yarn配置cgroup隔离CPU资源

遇到的问题配置cgroup配置 yarn

遇到的问题

我的环境中hadoop版本是 3.2.1

在运行spark on yarn任务时,虽然给每个spark任务分配了一定的CPU资源,但是对于计算密集型任务,它会突破分配的cpu上限,导致cpu飙升。

yarn默认只管理内存资源,虽然也可以申请cpu资源,但是在没有cpu资源隔离的情况下效果并不是太好,在集群规模大,任务多时资源竞争的问题尤为严重。可以通过配置yarn提供的LinuxContainerExecutor结合cgroup来隔离cpu资源

详见yarn-cgroup官方文档

配置cgroup
    安装cgroup
sudo yum install -y libcgroup-tools.x86_64 libcgroup

cgroup的配置文件目录在/sys/fs/cgroup/ 或者 /cgroup
我的 linux 版本是centos7.8,目录在/sys/fs/cgroup

    创建cgroup下的hadoop-yarn目錄
sudo mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn
sudo mkdir -p /sys/fs/cgroup/memory/hadoop-yarn
sudo mkdir -p /sys/fs/cgroup/blkio/hadoop-yarn
sudo mkdir -p /sys/fs/cgroup/net_cls/hadoop-yarn
sudo mkdir -p /sys/fs/cgroup/devices/hadoop-yarn
    启动cgroup
sudo systemctl start cgconfig
配置 yarn
    修改container-executor和container-executor.cfg文件的所有者和权限
chown root:hadoop /$HADOOP_HOME/bin/container-executor
chmod 6050 /$HADOOP_HOME/bin/container-executor

sudo chown root:hadoop /$HADOOP_HOME/etc/hadoop/container-executor.cfg
sudo chown root:hadoop /$HADOOP_HOME/etc/hadoop
sudo chown root:hadoop /$HADOOP_HOME/etc
sudo chown root:hadoop /$HADOOP_HOME
sudo chmod 400 /$HADOOP_HOME/etc/hadoop/container-executor.cfg

系统要求etc/hadoop/container-executor.cfg 的所有父目录(一直到/ 目录) owner 都为 root,这个路径是默认${HADOOP_HOME}/etc/hadoop/container-executor.cfg,如果不方便修改所有父级目录为root权限,就需要新编译代码到其他目录,比如/etc/hadoop(编译处理过程详见下一篇)

    修改container-executor.cfg 文件
    内容如下:
yarn.nodemanager.linux-container-executor.group=hadoop
banned.users=root
min.user.id=1000
allowed.system.users=hadoop
feature.tc.enabled=false
    修改 yarn-site.xml文件
    
        yarn.nodemanager.container-executor.class
    org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor
    
    
        yarn.nodemanager.linux-container-executor.resources-handler.class
        org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler
    
    
        yarn使用的cgroup组,默认为/hadoop-yarn
        yarn.nodemanager.linux-container-executor.cgroups.hierarchy
        /hadoop-yarn
    
    
        是否自动挂载cgroup
        yarn.nodemanager.linux-container-executor.cgroups.mount
        false
    
    
        cgroup挂载目录, /sys/fs/cgroup 或者是 /cgroup,目录和系统有关
        yarn.nodemanager.linux-container-executor.cgroups.mount-path
        /sys/fs/cgroup
    
    
        yarn.nodemanager.linux-container-executor.group
        hadoop
    

    
        配置nodemanager使用多少物理cpu资源,比如24核服务器配置90的话,最近使用21.6核
        yarn.nodemanager.resource.percentage-physical-cpu-limit
        80
    
    
        是控制是否严格限制cpu,即按任务申请的core限制,还是非严格限制,即按core的比率限制
        yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage
        true
    

    
        非安全模式将会以这里设置的用户运行container,比如配置hadoop用户则以hadoop运行container
        yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user
        hadoop
    
    检查配置
/$HADOOP_HOME/bin/container-executor --checksetup

如果没有任何输出表示配置成功

5.重启hdfs、yarn

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存