同时Spark 2应用程序

时间:2014-10-17 05:16:27

标签: apache-spark spark-streaming

我正在使用spark streaming并将处理后的输出保存在data.csv文件中

val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
JavaStreamingContext jssc = new JavaStreamingContext(conf, new Duration(1000))
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);

同时我想读取NetworkWordCount data.csv的输出以及另一个新文件并同时处理它

我的问题是

是否可以同时运行两个火花应用程序? 是否可以通过代码本身提交spark应用程序

我正在使用mac,现在我使用以下命令从spark文件夹提交spark应用程序

bin/spark-submit --class "com.abc.test.SparkStreamingTest" --master spark://xyz:7077 --executor-memory 20G --total-executor-cores 100 ../workspace/Test/target/Test-0.0.1-SNAPSHOT-jar-with-dependencies.jar 1000

或者只是没有spark:ip:port和executor memory,total executor core

bin/spark-submit --class "com.abc.test.SparkStreamingTest" --master local[4] ../workspace/Test/target/Test-0.0.1-SNAPSHOT-jar-with-dependencies.jar

和另一个读取文本文件以进行批处理的应用程序如下

bin/spark-submit --class "com.abc.test.BatchTest" --master local[4] ../workspace/Batch/target/BatchTesting-0.0.1-SNAPSHOT-jar-with-dependencies.jar

当我同时运行两个应用程序SparkStreamingTest和BatchTest都工作正常,但当我试图同时运行时,我得到以下错误

目前我正在使用独立火​​花模式

WARN AbstractLifeCycle: FAILED SelectChannelConnector@0.0.0.0:4040: java.net.BindException: Address already in use
java.net.BindException: Address already in use

任何帮助都很受欢迎..我完全不在乎我的想法

1 个答案:

答案 0 :(得分:3)

来自http://spark.apache.org/docs/1.1.0/monitoring.html

  

如果多个SparkContexts在同一主机上运行,​​它们将绑定到以4040(4041,4042等)开头的连续端口。

您的应用应该能够运行。这只是一个告诉你端口冲突的警告。这是因为你在同一时间运行两个Spark应用程序。但不要担心。 Spark会尝试4041,4042,直到找到可用的端口。因此,在您的情况下,您将找到两个Web UI:ip:4040,ip:4041用于这两个应用程序。