spark-submit后发现程序没有分布式运行

博客内容描述了在提交Spark应用时遇到的分布式运行问题。问题源于master和worker之间的通信故障,最初由于spark-env.sh配置错误,SPARK_LOCAL_IP设为localhost。尝试修改IP地址,但仍然无法解决问题。接着,作者尝试了更换JDK、安装Hadoop、调整配置等一系列操作,最终通过删除并重新下载、配置Spark解决了问题。此外,提到了默认的内存设置以及如何检查Spark集群状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

spark-submit后发现程序没有分布式运行
w3m http://localhost:8080
在这里插入图片描述

  • 发现要用--master spark://[masterip]:7077命令运行,例如
    spark-submit --master spark://masternode:7077 yourapp
  • 但是仍然不行,出现如下状况

    8080 UI显示如下:

原因分析:

master和worker之间通信出了问题,因为用一台机器座位worker和master是可以运行的
仔细看,下图这里出了问题,所以应该是spark-env.sh配置出了问题
在这里插入图片描述
在之前的配置中,master和slaves上的spark-env.sh的SPARK_LOCAL_IP都写的localhost。现在所有的的spark-env.sh的SPARK_LOCAL_IP写为了各自的ip地址。

尝试解决:

  • 这时候再输入w3m http://dl8:8080可以看到下图
    在这里插入图片描述
    而输入w3m http://localhost:8080就提示
    w3m: Can't load http://localhost:8080.

  • 但是这时候再运行,还是不行,仔细查看运行UI,发现slaves连不上dl8这个端口,这个端口是driver的端口
    在这里插入图片描述

  • 后来就不知道怎么办了,就找了个教程,做了如下操作,就好了

    1. 卸载openjdk,使用官网上下载的jdk
    2. 自己安装一个hadoop(期间Hadoop的通信业出了问题,安装及解决方案参考我这个博文:https://blog.csdn.net/DayOneMore/article/details/114295841
    3. 最后还是不行,期间遇到无数问题,每天有效工作时间七八个小时,找了6天,我好苦啊。。。
    4. 再后来,我删掉了spark文件,又重新下载了一遍,又解压缩,配置,神奇的就好了,苍天啊

other

  • spark-submit --master spark://17x.xx.xx.x:7077 --executor-memory 10g test.py
    • --executor-memory 10g设置可以使用worker的多少内存

    • 但是设置了会报错不知道为啥
      在这里插入图片描述

    • 所以核心数不用设置

  • 注意,默认的memory设置
    • spark.driver.memoryr,默认 1G
    • spark.executor.memory,默认 1G

其他

scala-shell下,查看sparkcontext
sc.getConf.getAll.foreach(println)

检测spark集群搭建是否成功
pyspark --master spark://172.16.112.23:7077
看application的stderr有没有报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值