Ubuntu远程执行Spark程序
有时候需要远程访问Spark集群,执行任务,或者远程将代码提交到Spark集群,本文尝试了Windows访问Spark集群,和Ubutnu访问Spark集群:
- Ubuntu访问Spark集群
- Windows访问Spark集群
Spark程序
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
//原文链接:http://www.jianshu.com/p/a617005df355
public class Test1 {
public static String USER="yancy";
public static void main(String[] args) {
// TODO Auto-generated method stub
// 以下构造sc对象的构造方法各参数意义依次为:
// Spark Master的地址;
// App的名称;
// HDFS文件的位置;
String[] jars = {"/home/hadoop/workspace/Spark_test1/Spark_test1.jar"};
String sparkuil = "spark://10.2.205.212:7077";
SparkConf sparkConf = new SparkConf().setMaster(sparkuil).setAppName("JavaWordCount");
sparkConf.setJars(jars);//将Jar包分发到集群中,本程序中可
//以不用,但是对于集群程序需要用到,才能远程执行,
//这与Hadoop的方法很像
JavaSparkContext sc = new JavaSparkContext(sparkConf);
System.out.println(sc);
String file = "hdfs://10.2.205.212:9000/1/JavaWordCount.txt";
JavaRDD<String> data = sc.textFile(file).cache();
long num = data.count();
System.out.println("This number is very long .........................................................." + num);
}
}
Ubuntu访问Spark集群(正确的)
这里首先是配置,Spark集群的配置可以查看其它的资源,但是远程节点的Ubuntu主机也安装了Spark,和集群所用安装包一样。 Spark版本为spark-1.5.1-bin-hadoop1.tgz,Hadoop版本为1.1.2 但是远程Ubuntu主机上并没有配置Spark环境变量。 Eclipse版本为 Mars.2 Release (4.5.2) Java版本为: JDK1.7.0._80 在Eclipse上新建Java application,这里没有创建Maven,因为觉得暂时没必要太复杂,因为Spark程序可能要集成到我的Web 后台中,所以只用了简单的方式。
Win7访问Spark集群(没成功)
windows下同样使用Mars版本的Eclipse创建Java项目访问Spark集群, 但是只能连接到Spark集群,就是代码的System.out.println(sc)能够输出,但是到下一步后就会报错,无法读取HDFS文件。尽管我尝试了增加JAVA内存但是还是不行。现在看来,应该是因为Win7上没有安装Spark的原因,暂时先不深究。
16/11/12 10:32:30 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://driverPropsFetcher@10.2.205.206:34787]
16/11/12 10:32:30 INFO Utils: Successfully started service 'driverPropsFetcher' on port 34787.
16/11/12 10:32:32 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkDriver@169.254.217.235:65210] has Failed,address is now gated for [5000] ms. Reason is: [Association Failed with [akka.tcp://sparkDriver@169.254.217.235:65210]].
Exception in thread "main" akka.actor.ActorNotFound: Actor not found for: ActorSelection[Anchor(akka.tcp://sparkDriver@169.254.217.235:65210/),Path(/user/CoarseGrainedScheduler)]