Spark 3.4.1独立集群任务提交资源错误排查求助
Spark独立集群读取cal_housing.data任务失败问题排查方案
1. 确认数据集的可访问性
- 若使用本地文件路径,
cal_housing.data必须存放在所有Worker节点的相同绝对路径下,否则Task在Worker节点找不到文件,会卡住导致资源请求无响应,别只在Master节点存放文件。 - 检查文件权限:在每个Worker节点执行
ls -l /实际文件路径/cal_housing.data,确保Spark运行用户(如spark用户)拥有读取权限。
2. 调整任务资源请求参数
简单脚本资源需求低可正常运行,但读取数据集的任务需匹配集群资源配置:
- 提交任务时显式指定资源参数,示例:
spark-submit --master spark://你的MasterIP:7077 --executor-cores 2 --executor-memory 8g --total-executor-cores 4 你的脚本.py - 核对
spark-defaults.conf中的默认配置,比如spark.executor.cores不要超过单个Worker的核心数(你单Worker是4核,就别设为5),spark.executor.memory不要超过Worker剩余内存上限。
3. 查看Worker节点的具体报错日志
Master的警告只是表面现象,直接去每个Worker节点的SPARK_HOME/work目录下,找到对应任务的stderr日志,里面会有具体报错信息——比如文件找不到、权限不足、JVM内存溢出等,这才是问题的核心根源。
4. 检查读取代码的正确性
cal_housing.data是无表头的CSV格式,参考正确的读取逻辑:
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("CalHousingJob").getOrCreate() # 本地文件需加file://前缀,HDFS文件则用hdfs://前缀 df = spark.read.csv("file:///实际文件路径/cal_housing.data", sep=",", inferSchema=True, header=False) df.show()
若使用sc.textFile读取,也要确保路径格式正确,避免因解析错误导致Task崩溃。
5. 验证节点间网络连通性
- 在Master节点ping所有Worker节点,在Worker节点ping Master节点,确保网络无阻塞。
- 检查防火墙是否开放Spark默认端口:7077(Master通信端口)、8081(Worker UI端口),避免节点间无法正常通信。
内容的提问来源于stack exchange,提问作者ctappy
相关产品推荐
相关产品推荐

