3

私たちは、8 コアと 32 GB RAM を備えた Spark スタンドアロン クラスターを使用しており、同じ構成の 3 ノード クラスターを使用しています。

ストリーミング バッチが 1 秒未満で完了することがありました。その時点で 10 秒以上かかる場合があり、以下のログがコンソールに表示されます。

2016-03-29 11:35:25,044  INFO TaskSchedulerImpl:59 - Removed TaskSet 18.0, whose tasks have all completed, from pool 
2016-03-29 11:35:25,044  INFO DAGScheduler:59 - Job 18 finished: foreachRDD at EventProcessor.java:87, took 1.128755 s
2016-03-29 11:35:31,471  INFO JobScheduler:59 - Added jobs for time 1459231530000 ms
2016-03-29 11:35:35,004  INFO JobScheduler:59 - Added jobs for time 1459231535000 ms
2016-03-29 11:35:40,004  INFO JobScheduler:59 - Added jobs for time 1459231540000 ms
2016-03-29 11:35:45,136  INFO JobScheduler:59 - Added jobs for time 1459231545000 ms
2016-03-29 11:35:50,011  INFO JobScheduler:59 - Added jobs for time 1459231550000 ms
2016-03-29 11:35:55,004  INFO JobScheduler:59 - Added jobs for time 1459231555000 ms
2016-03-29 11:36:00,014  INFO JobScheduler:59 - Added jobs for time 1459231560000 ms
2016-03-29 11:36:05,003  INFO JobScheduler:59 - Added jobs for time 1459231565000 ms
2016-03-29 11:36:10,087  INFO JobScheduler:59 - Added jobs for time 1459231570000 ms
2016-03-29 11:36:15,004  INFO JobScheduler:59 - Added jobs for time 1459231575000 ms
2016-03-29 11:36:20,004  INFO JobScheduler:59 - Added jobs for time 1459231580000 ms
2016-03-29 11:36:25,139  INFO JobScheduler:59 - Added jobs for time 1459231585000 ms

この問題を解決する方法を教えてください。

4

3 に答える 3

4

spark-submit マスターをローカルからローカルに変更します[2]

spark-submit --master local[2] --class YOURPROGRAM YOUR.jar

または設定

new SparkConf().setAppName("SparkStreamingExample").setMaster("local[2]")

数値を 2 に変更した後も同じ問題に直面している場合は、より大きな数値に変更する必要があります。

参照: http://spark.apache.org/docs/latest/streaming-programming-guide.html

Spark Streaming プログラムをローカルで実行する場合は、「local」または「local[1]」をマスター URL として使用しないでください。これらのいずれも、タスクをローカルで実行するために 1 つのスレッドのみが使用されることを意味します。受信側 (ソケット、Kafka、Flume など) に基づく入力 DStream を使用している場合、単一のスレッドが受信側の実行に使用され、受信データを処理するためのスレッドは残りません。したがって、ローカルで実行する場合は、常に「local[n]」をマスター URL として使用します。ここで、n > 実行するレシーバーの数です (マスターの設定方法については、Spark のプロパティを参照してください)。

クラスターで実行するようにロジックを拡張すると、Spark ストリーミング アプリケーションに割り当てられるコアの数は、レシーバーの数よりも多くなければなりません。そうしないと、システムはデータを受け取りますが、それらを処理することはできません。

bit1129 のクレジット: http://bit1129.iteye.com/blog/2174751

于 2016-10-14T09:29:36.520 に答える
-2

実際には問題ではありません。これらINFOは単なるログ メッセージであり、ログ レベルをINFOからWARNまたはERRORに変更することで回避できますconf/log4j.properties

Spark Streaming は、入力データを小さなバッチにバッファリングし、定期的に実行するために入力のバッチを送信するため、ここでは問題になりません。

于 2016-03-29T15:42:57.680 に答える