您的位置:首页 > 其它

蜗龙徒行-Spark学习笔记【五】IDEA中集群运行模式的配置

2017-07-31 23:59 746 查看

问题现象

在IDEA中运行sparkPI,报错:

Exception in thread “main” org.apache.spark.SparkException: A master URL must be set in your configuration



问题根因

从提示中可以看出找不到程序运行的master,此时需要配置环境变量,指定spark集群的运行模式。

传递给Spark的master url可以有如下几种:

local 本地单线程

local[K] 本地多线程(指定K个内核)

local[*] 本地多线程(指定所有可用内核)

spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。

mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。

yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

问题解决

方法1:配置IDEA的VM参数

点击edit configuration,在左侧点击该项目。在右侧在右侧VM options中输入“-Dspark.master=local”,指示本程序本地单线程运行,再次运行即可。



仅仅配置“local”,运行时依旧会报错:



还是得配置成”-Dspark.master=local”才会运行成功,控制台输出信息如下:

/usr/lib/java/jdk1.7.0_71/bin/java
-Dspark.master=local
-Didea.launcher.port=7542
-Didea.launcher.bin.path=/usr/local/idea/idea-IC-135.1306/bin
-Dfile.encoding=UTF-8


方法2:在代码中直接设置运行模式

val conf = new SparkConf().setAppName(“Spark Pi”).setMaster(“local”)



非local模式的配置

val conf = new SparkConf().setAppName("Spark Pi").setMaster("spark://Master:7077")


错以为IDEA在运行时会去自动启动spark分布式环境,于是手动使用stop-all.sh分别将hadoop集群、spark集群关闭,按如上配置后报错:

ERROR SparkDeploySchedulerBackend: Application has been killed. Reason: All masters are unresponsive! Giving up.




使用start-all.sh手动重启hadoop集群、spark集群:



重新运行SparkPI依旧报错:

java.lang.ClassNotFoundException: org.apache.spark.examples.SparkPi$$anonfun$1



分布式的启动配置暂时搁置,先使用local模式学习spark为先,后续再究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark
相关文章推荐