1

Spark ストリーミングを使用し、処理された出力を 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 の出力を別の新しいファイルとともに読み取り、同時に再度処理したいと思います

ここでの私の質問は

2 つの Spark アプリケーションを同時に実行することはできますか? コード自体を使用して 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 とエグゼキュータ メモリなし、エグゼキュータ コアの合計

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

どんな助けも大いに感謝しています..私は完全に頭がおかしいです

4

1 に答える 1

3

http://spark.apache.org/docs/1.1.0/monitoring.htmlから

複数の SparkContext が同じホストで実行されている場合、それらは 4040 で始まる連続するポート (4041、4042 など) にバインドされます。

アプリを実行できるはずです。ポートの競合について通知するのは単なる警告です。これは、2 つの Spark アプリを同時に実行するためです。しかし、それについて心配する必要はありません。Spark は、利用可能なポートが見つかるまで 4041、4042 を試行します。したがって、あなたの場合、これら 2 つのアプリの ip:4040、ip:4041 という 2 つの Web UI が見つかります。

于 2014-10-17T08:22:38.823 に答える