![](/img/trans.png)
[英]How to run a spark program on cluster from within a separate java program?
[英]How to run a java program on Apache Spark Cluster?
我遵循了教程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>
我建議您在 IDE 中編寫簡單的 Java 或 Scala 類。 在“SimpleApp.java”中創建 SparkConf 和 SparkContext 對象。
SparkConf conf = new SparkConf().setAppName(appName).setMaster("local[2]");
JavaSparkContext sc = new JavaSparkContext(conf);
運行maven clean package
或maven package
,它將在項目的目標文件夾中創建 jar 文件。 如果沒有,則使用以下命令創建 JAR 文件。 您可以在“target/classes”文件夾中找到 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程序。
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 的默認端口號。
我不使用 mvn 運行它們,我只是構建了一個胖 jar,將它 scp 到集群,然后運行:
java -cp /path/to/jar.jar com.yourcompany.yourpackage.YourApp some arguments
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.