问题描述:
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的端口
-
后来就不知道怎么办了,就找了个教程,做了如下操作,就好了
- 卸载openjdk,使用官网上下载的jdk
- 自己安装一个hadoop(期间Hadoop的通信业出了问题,安装及解决方案参考我这个博文:https://blog.csdn.net/DayOneMore/article/details/114295841)
- 最后还是不行,期间遇到无数问题,每天有效工作时间七八个小时,找了6天,我好苦啊。。。
- 再后来,我删掉了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有没有报错