连续信息JobScheduler:59 - 在我的Spark独立群集

时间:2016-03-29 10:26:34

标签: apache-spark spark-streaming apache-spark-standalone

我们正在使用具有8个内核和32GB Ram的Spark Standalone Cluster,其中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

请帮助,如何解决这个问题。

3 个答案:

答案 0 :(得分:3)

将spark-submit master从local更改为local [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。这两种方法都意味着只有一个线程将用于本地运行任务。如果您正在使用基于接收器的输入DStream(例如套接字,Kafka,Flume等),那么将使用单个线程来运行接收器,而不留下用于处理接收数据的线程。因此,当在本地运行时,总是使用“local [n]”作为主URL,其中n>要运行的接收器数量(有关如何设置主站的信息,请参阅Spark属性)。

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

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

答案 1 :(得分:2)

我通过将master从local设置为local来解决了这个问题[2]。以下相关引用来自spark streaming doc:

  

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

答案 2 :(得分:-1)

这确实不是问题,这些INFO只是日志消息,您可以通过将INFO中的日志级别更改为WARNERROR来避免这些消息}}

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