一.序言
spark 现在用得比较多了,但是开始连接spark 的的时候有些小问题,这里简单记录一下, 我用的spark1.4.1 hadoop2.7 hive1.2.1, 目的想用spark-sql 连接 hive 的metastore,关于集群配置 这暂时不介绍了,例子很多,这里仅仅记录java/scala 连接部分。
二.连接配置
2.1 maven 配置:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
2.2 java 连接
public static final String master = "spark://master:7077";
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("demo").setMaster(master);
JavaSparkContext sc = new JavaSparkContext(conf);
System.out.println(sc);
sc.stop();
}
基本上 获取到sc,就算连接成功了
3.连接问题:
异常1:连接的时候控制台:
15/09/07 11:24:54 INFO ui.SparkUI: Started SparkUI at http://10.1.50.190:4040
15/09/07 11:24:54 INFO client.AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@master:7077/user/Master...
15/09/07 11:24:54 WARN remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@master:7077] has failed, address is now gated for [5000] ms. Reason is: [Disassociated].
15/09/07 11:25:14 INFO client.AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@master:7077/user/Master...
15/09/07 11:25:14 WARN remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@master:7077] has failed, address is now gated for [5000] ms. Reason is: [Disassociated].
spark log 出现:
ERROR Remoting: org.apache.spark.deploy.Command; local class incompatible: stream classdesc serialVersionUID = -7098307370860582211, local class serialVersionUID = -3335312719467547622
java.io.InvalidClassException: org.apache.spark.deploy.Command; local class incompatible: stream classdesc serialVersionUID = -7098307370860582211, local class serialVersionUID = -3335312719467547622
这个是连接到了服务器,但是class 不匹配,也就是版本不对,用spark-core_2.11 版本会出现这个异常,因为启动spark-shell 启动的的时候,info 信息表示用的scala-2.10.4 版本。
异常二:
出现类似的:
scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashS
这里也是因为我本例用的scala 2.11 的SDK,然后我换成了2.10 就好了
异常三:
client.AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@10.10.1.1:7077/user/Master...
一直连接不上spark,因为这里使用ip:10.1.1.1 进行连接,而spark_master_ip 配置是master 的映射,因此通过ip 他会找不到,要客户端配置10.1.1.1 master 映射,用master 连接 就行,这里有点怪- -!
其他异常:
还有包含防火墙,集群之间网络等问题,差不多 都是这些引起的。
小结:
1.先保证集群之间连通,一般也是网络 防火墙 等问题造成的,我是直接关闭了 防火墙
2.客户端连接 一般是网络 域名 版本造成的,要看日志
3.日志 通过spark/conf/log.propertis 设置成debug 就能看到很详细的日志,如果没看到日志,那么说明客户端还没连接到服务器
4.可以通过spark-shell --master spark://ip:7070 尝试连接,然后再通过客户端连接