3

我们正在使用具有 8 个内核和 32GB 内存的 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 master 从本地更改为本地 [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。这些中的任何一个都意味着只有一个线程将用于在本地运行任务。如果您使用的是基于接收器(例如套接字、Kafka、Flume 等)的输入 DStream,那么将使用单线程来运行接收器,不留任何线程来处理接收到的数据。因此,在本地运行时,始终使用“local[n]”作为主 URL,其中 n > 要运行的接收器数量(有关如何设置主服务器的信息,请参阅 Spark 属性)。

将逻辑扩展到在集群上运行,分配给 Spark Streaming 应用程序的核心数量必须大于接收器的数量。否则,系统将接收数据,但无法处理它们。

归功于 bit1129:http ://bit1129.iteye.com/blog/2174751

于 2016-10-14T09:29:36.520 回答
2

我通过将 master 从本地设置为本地 [2] 解决了这个问题。以下相关引用来自火花流文档:

但请注意,Spark worker/executor 是一项长时间运行的任务,因此它占用了分配给 Spark Streaming 应用程序的核心之一。因此,重要的是要记住,需要为 Spark Streaming 应用程序分配足够的内核(或线程,如果在本地运行)来处理接收到的数据,以及运行接收器。

于 2017-05-05T03:09:15.553 回答
-2

这确实不是问题,这些INFOs 只是日志消息,您可以通过将日志级别从INFOtoWARNERRORin更改来避免这些消息conf/log4j.properties

Spark Streaming 会将您的输入数据缓冲成小批量,并定期提交该批输入以供执行,因此这里没有问题。

于 2016-03-29T15:42:57.680 回答