如何在Apache Spark Cluster上运行java程序?

时间:2014-04-09 21:51:40

标签: java apache-spark

我遵循了教程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>

2 个答案:

答案 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 packagemaven 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