我遵循了教程https://spark.apache.org/docs/0.8.1/quick-start.html
中的“Java独立应用程序”部分这部分按预期工作
$ mvn package
$ mvn exec:java -Dexec.mainClass="SimpleApp"
...
Lines with a: 46, Lines with b: 23
如何在群集上并行运行同一个类?如果我可以通过这一步,我将使用HDFS数据作为输入。 是否可以使用以下参数运行此SimpleApp.java:
./run-example <class> <params>
答案 0 :(得分:2)
我建议你在IDE中编写简单的Java或Scala类。在&#34; SimpleApp.java&#34;。
中创建SparkConf和SparkContext对象SparkConf conf = new SparkConf().setAppName(appName).setMaster("local[2]");
JavaSparkContext sc = new JavaSparkContext(conf);
运行maven clean package
或maven package
后,它会在项目的目标文件夹中创建jar文件。如果它没有,则使用以下命令创建JAR文件。您可以在&#34; target / classes&#34; 文件夹中找到SimpleApp.class文件。 cd到这个目录。
jar cfve file.jar SimpleApp.class
将此JAR文件放入目标目录中的项目中。此JAR文件包含将作业提交给Spark时SimpleApp类的依赖关系。我想你的项目结构如下所示。
simpleapp
- src/main/java
- org.apache.spark.examples
-SimpleApp.java
- lib
- dependent.jars (you can put all dependent jars inside lib directory)
- target
- simpleapp.jar (after compiling your source)
cd到你的spark目录。我正在使用spark-1.4.0-bin-hadoop2.6。你的cmd看起来像这样。
spark-1.4.0-bin-hadoop2.6>
使用以下命令启动master和worker。
spark-1.4.0-bin-hadoop2.6> ./sbin/start-all.sh
如果这不起作用,则单独启动主设备和从设备。
spark-1.4.0-bin-hadoop2.6> ./sbin/start-master.sh
spark-1.4.0-bin-hadoop2.6> ./sbin/start-slaves.sh
使用Spark Submit提交您的spark程序。如果你有像我解释的那样的结构,那么在课堂上传递这个论点。
--class org.apache.spark.examples.SimpleApp
否则
--class SimpleApp
最后通过spark submit提交你的火花程序。
spark-1.4.0-bin-hadoop2.6>./bin/spark-submit --class SimpleApp --master local[2] /PATH-TO-YOUR-PROJECT-DIRECTORY/target/file.jar
此处我使用 local [2]作为主,因此我的程序将在两个主题上运行,但您可以将--master中的主URL作为--master spark://YOUR-HOSTNAME:7077
端口号7077是主URL的默认端口号。
答案 1 :(得分:0)
我不用mvn运行它们,我只是构建一个胖jar,将它scp到集群,然后运行:
java -cp /path/to/jar.jar com.yourcompany.yourpackage.YourApp some arguments