簡體   English   中英

如何在 Apache Spark 集群上運行 Java 程序?

[英]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 packagemaven 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM