如何在Mesos集群模式下通过Spark运行本地Python脚本
解决方案
针对你的问题,结合主从节点的NFS共享环境,有两种可行的方式让Agent节点成功运行Python脚本:
方式一:利用NFS共享直接访问脚本(推荐)
既然主节点与Agent节点通过NFS共享文件,核心是让Mesos跳过文件拉取逻辑,直接使用共享路径:
验证NFS挂载一致性
在所有Agent节点上执行以下命令,确认能访问到脚本:ls /home/ryneli/test.py确保输出能显示脚本文件,且
ryneli用户对该文件有读权限。修改spark-submit命令
添加spark.mesos.fetch.enabled=false配置,禁用Mesos的Fetcher拉取功能(因为文件已通过NFS在所有节点可用):./bin/spark-submit --deploy-mode cluster \ --master mesos://master:7077 \ --conf spark.master.rest.enabled=true \ --conf spark.mesos.fetch.enabled=false \ /home/ryneli/test.py修复脚本shebang行
将脚本的首行改为标准格式,确保Agent能正确找到Python解释器:#!/usr/bin/env python3 -u print("HIHI")
方式二:配置Fetcher正确识别NFS路径
如果需要保留Fetcher功能,可调整脚本路径的传递方式:
- 确保脚本路径为NFS的统一绝对路径,让Mesos Fetcher能在Agent节点上直接访问。
- 检查Mesos Agent的启动配置,将
sandbox_directory改为绝对路径(错误日志中显示的agent_dir是相对路径,这是导致拉取失败的诱因之一)。
额外检查项
- 确认Agent节点存在
ryneli用户,且该用户对NFS共享目录有读写权限。 - 检查Mesos Agent日志,确认NFS挂载在Agent节点上正常工作。
内容的提问来源于stack exchange,提问作者YYLIZH
相关产品推荐
相关产品推荐

