作者:冉南阳
1
问题复现
- 测试环境:
1.RedHat7.4
2.CM和CDH版本5.16.1
3.集群已启用Kerberos
在5.16.1集群中,启动NodeManager时失败,报错如下
出现该问题的原因是文件系统/var的挂载参数含有nosuid,nosuid防止可执行文件的setuid bit生效。从而造成setuid bit设置为“root”权限的二进制文件container-executor将无法访问属主为“root”的container-executor.cfg配置文件,从而导致上述错误。
2
问题解决
所有数据节点重新挂载/var目录,移除nosuid参数
代码语言:javascript复制cat /proc/mounts|grep var
mount -o remount, rw /var
修改配置文件/etc/fatab,将/dev/mapper/VolGroup-var行的nosuid删除
3
总结
1、从CDH5.16.1开始,NodeManager在initialize container executor时,会读取文件/var/lib/yarn-ce/etc/hadoop/container-executor.cfg,此文件动态生成。
2、当配置文件/var/lib/yarn-ce/etc/hadoop/container executor.cfg所处文件系统的挂载参数含有nosuid时,nosuid防止可执行文件的setuid bit生效。 从而造成container-executor二进制文件无法访问属主为“root”的container-executor.cfg配置文件,从而导致NodeManager启动失败