先说背景:shell
3台服务器,hadoop, hbase, spark都是集群环境,都建在这3台服务器上。apache
计划用driver的方式,远程执行spark application。ubuntu
坑1:开发用的是ubuntu虚拟机,自动生成的ip地址,跟服务器集群不在一个网段上,致使服务器集群没法正常和driver通讯,以后把虚拟机网络设置为桥接模式,done!服务器
坑2:关于setJars,大部分的资料包括apache官方的资料,都是基于spark submit或者是shell方式给出的例子,根本没提到setJars什么事,致使出现各类各样的莫名其妙的问题,后来才知道须要用setJars把driver的jar包给到spark cluster,done!网络
坑3:仍是关于setJars,因为须要访问hbase,因此引入了hbase的jar包,最初觉得把jar包放到lib当中,包含在driver的jar当中便可,后来发现不行,须要单独的把以来的jar包给过去,done!(能不能在spark的环境变量当中,设置一下依赖的外部jar包?尝试了SPARK_CLASSPATH,发现不行,不知道有什么其余的办法。)app
坑4:额~~~,仍是关于setJars,使用saveAsHadoopDataset直接把RDD存到hbase当中,代码看我以前的帖子,启动输出一些日志以后,日志就不动了!各类找问题,处处发帖子求助!没人搭理!最后本身把spark日志等级调到debug,发现了sockettimeoutexception,又发现是链接的10620端口,怀疑端口占用,就把region server port改为了别的,错误依旧。无奈去吃饭,吃完饭回来,spark通过n次的重试终于放弃,而后给出了一个错误日志,竟然是缺乏jar包。加了个metrics-core-2.2.0.jar,done!socket