Continuously Info JobScheduler:59-在我的Spark Standalone cluster中添加了时间为***ms的作业


0

我们正在使用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

将spark submit master从 local更改为 local[2]

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

或设置

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

如果你在把数字改为2后仍然面临同样的问题,也许你应该把它改为更大的数字。

参考文献:

在 local运行Spark流媒体程序时,不要使用“local”或“local[1]”作为主URL。这意味着只有一个线程将用于 local运行任务。如果您使用的是基于接收器的输入数据流(如sockets、kafka、flume等),那么将使用单线程来运行接收器,不留下处理接收数据的线程。因此,在 local运行时,始终使用“local[n]”作为主URL,其中n>要运行的接收器数(有关如何设置主服务器的信息,请参阅Spark属性)。

将逻辑扩展到在集群上运行,分配给 spark流应用程序的 core数必须大于接收器数。否则,系统将接收数据,但无法对其进行处理。

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


0

我通过将master从 local设置为 local来解决这个问题[2]。以下相关报价来自Spark Streaming文档:

但是请注意,Spark Worker/Executor是一个长期运行的任务,因此它占用分配给Spark流应用程序的一个 core。因此,重要的是要记住, spark流应用程序需要分配足够的 core(或线程,如果在 local运行)来处理接收到的数据以及运行接收器。

0

事实上,这不是问题,这些信息只是日志消息,您可以通过在conf/log4j.properties中将日志级别从info更改为warn或error来避免。

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


我来回答