遇到的问题配置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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)