java - 如何在 Apache Spark 集群上运行 java 程序?

标签 java apache-spark

我遵循了教程的“Java 中的独立应用程序”部分 https://spark.apache.org/docs/0.8.1/quick-start.html

这部分按预期工作

$ 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。你的命令看起来像这样。

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 传递://您的主机名:7077

端口号 7077 是主 URL 的默认端口号。

关于java - 如何在 Apache Spark 集群上运行 java 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974661/

相关文章:

java - 将 Object -HashMap 转换为 XMLObject

java - 应用@EnableCircuitBreaker后获取异常java.lang.ArrayStoreException : sun. Reflect.annotation.TypeNotPresentExceptionProxy

scala - Cassandra 全表转储到 HDFS

python - 将 pyspark 数据帧中的多列转换为一个字典

apache-spark - 插入 map 时不支持的操作异常

scala - Spark 创建新列,其中包含某些其他列中相应值的最小值和最大值

java - Android 4.4 设置默认短信应用程序无需用户确认

java - cordova/Mobile First 应用程序中的“主要版本 51 比 5 更新”

java - 创建一个对象数组类型的ArrayList

python - 使用 PySpark 对多列执行滞后