EMR集群部署spark-jobserver启动报Permission denied错误如何解决
问题解决步骤
根因分析
你遇到的报错本质不是单纯的权限问题,注意报错路径末尾的\r字符:这是Windows格式换行符(CRLF)残留,说明你上传的启动脚本或配置文件是在Windows环境编辑过的,Shell解析时会把\r识别为路径的一部分,你此前修改的/mnt/var/log/spark-jobserver路径和系统要创建的带不可见字符的路径不匹配,所以权限修改不生效。EMR集群完全支持部署spark-jobserver,不存在兼容性问题。
具体操作
- 第一步:转换文件换行符格式
先安装换行符转换工具,批量处理所有脚本和配置文件:# 安装dos2unix工具 sudo yum install -y dos2unix # 批量转换所有shell脚本格式 find /mnt/lib/spark-jobserver -name "*.sh" -exec dos2unix {} \; # 批量转换所有配置文件格式 find /mnt/lib/spark-jobserver -name "*.conf" -exec dos2unix {} \; - 第二步:手动创建日志目录并配置权限
避免启动脚本自动创建目录出现权限异常,手动初始化目录:# 递归创建正确的日志目录 sudo mkdir -p /mnt/var/log/spark-jobserver # 把目录所有者修改为启动服务的用户,此处以你日志里的hadoop用户为例 sudo chown -R hadoop:hadoop /mnt/var/log/spark-jobserver # 配置目录读写权限 sudo chmod -R 755 /mnt/var/log/spark-jobserver - 第三步:重新启动服务
cd /mnt/lib/spark-jobserver ./server_start.sh
可选校验
如果启动仍然失败,直接打开server_start.sh检查日志路径相关的变量定义,确认没有多余的特殊字符即可。
内容的提问来源于stack exchange,提问作者Abhisek Ray
相关产品推荐
相关产品推荐

