一.序言
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://[email protected]: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 尝试连接,然后再通过客户端连接