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

问题现象

在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为先,后续再究。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值