在YARN上运行PySpark遇Permission denied错误求助
YARN上PySpark RDD阶段权限报错排查与解决
报错信息
WARN scheduler.TaskSetManager: Lost task 0.2 in stage 0.0 (TID 2, node03, executor 3): java.io.IOException: Cannot run program "-home-user-anaconda3-bin-python3": error=13, Permission denied
已执行操作
- 所有节点完成Anaconda配置
- 将Anaconda目录权限修改为777
- 全网搜索解决方案未解决问题
当前.bashrc配置
if [ -f "/home/user/anaconda3/etc/profile.d/conda.sh" ]; then . "/home/user/anaconda3/etc/profile.d/conda.sh" else export PATH="/home/user/anaconda3/bin:$PATH" fi fi # 此处存在语法错误:多余的闭合fi unset __conda_setup export HADOOP_HOME=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop export SPARK_HOME=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH export PYSPARK_PYTHON=/home/user/anaconda3/bin/python3 export PYSPARK_DRIVER_PYTHON=/home/user/anaconda3/bin/python3 export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH # JAVA export JAVA_HOME=/usr/java/default export PATH=$PATH:$JAVA_HOME/bin # added by Anaconda3 installer export PATH="/home/zhenyu/anaconda3/bin:$PATH" # 路径与上方/home/user/anaconda3不一致 #export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop #export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
问题分析
- 语法错误导致环境变量加载失败:.bashrc中存在多余的
fi,导致整个配置文件解析异常,后续环境变量(包括PYSPARK_PYTHON)无法正确生效,PySpark解析路径时将斜杠误处理为连字符,生成了无效的-home-user-anaconda3-bin-python3路径。 - Anaconda路径不一致:配置中同时出现
/home/user/anaconda3和/home/zhenyu/anaconda3两个不同的Anaconda路径,导致节点间环境变量不统一。
解决方案
- 修复.bashrc语法错误:删除多余的那个
fi,确保配置文件能正常加载。 - 统一Anaconda路径:将所有Anaconda相关路径统一为同一个(比如全部改为
/home/user/anaconda3或/home/zhenyu/anaconda3),保证所有节点的配置完全一致。 - 生效环境变量:在所有节点执行
source ~/.bashrc,或重新登录用户,确保修改后的配置生效。 - 显式指定Python路径(可选):提交任务时通过参数强制指定Python路径,避免环境变量传递问题:
或在spark-submit --conf spark.pyspark.python=/home/user/anaconda3/bin/python3 your_spark_script.pyspark-defaults.conf中添加全局配置:spark.pyspark.python=/home/user/anaconda3/bin/python3
内容的提问来源于stack exchange,提问作者A code sheep
相关产品推荐
相关产品推荐

