重启主VM后GPU型Dataproc Cluster提交Spark作业失败问题求助
问题根因
/sys/fs/cgroup 属于临时文件系统(tmpfs),所有权限、目录修改都会在VM重启后自动重置。你使用的GPU驱动安装脚本中的权限修复命令只会在集群首次创建的初始化阶段执行一次,VM重启后配置失效,YARN用户没有权限创建cgroup子目录,直接导致NodeManager启动失败,YARN集群无可用计算节点,作业无法调度资源就会抛出"Task was not acquired"报错。
解决方案
临时验证方案
VM重启后手动执行以下命令,再重启YARN服务即可恢复作业提交能力:
chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices systemctl restart hadoop-yarn-nodemanager
永久生效方案
二选一即可:
- 修改现有GPU初始化脚本,新增开机自启规则
在你使用的install_gpu_driver.sh脚本末尾添加如下内容,将权限修复命令注册为开机自启服务,保证每次VM启动都会先执行权限修复再启动YARN服务:
cat > /etc/systemd/system/fix-yarn-cgroup-perms.service << EOF [Unit] Description=Fix YARN cgroup permissions after system boot Before=hadoop-yarn-nodemanager.service [Service] Type=oneshot ExecStart=/bin/bash -c "chown :yarn -R /sys/fs/cgroup/cpu,cpuacct && chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct && chown :yarn -R /sys/fs/cgroup/devices && chmod g+rwx -R /sys/fs/cgroup/devices" [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable fix-yarn-cgroup-perms.service
修改完成后重新使用该脚本创建集群即可,后续VM重启无需手动操作。
- 升级Dataproc基础镜像版本
你当前使用的1.5.35-debian10属于旧版本镜像,2.0及以上版本的Dataproc官方镜像已经默认修复了重启后cgroup权限重置的问题,直接选用高版本镜像创建集群即可避免该问题。
内容的提问来源于stack exchange,提问作者Zafer Cavdar
相关产品推荐
相关产品推荐

