如何在Spark 1.6.2下控制日益增长的Scheduler Delay?

时间:2017-01-15 21:19:47

标签: apache-spark spark-streaming

我在Spark 1.6.2下运行流式传输作业,从队列中获取批次。我尝试了各种大小的内存和执行程序数量,例如:

spark-submit --class "MyStreamingClass" --master yarn --deploy-mode cluster --driver-memory 11g --executor-memory 11g
--num-executors 7 --conf spark.yarn.executor.memoryOverhead=256 mystuff-*.jar

每个批处理请求重新处理同一组数据,更新更改的值。也就是说,结构相同,大小相同, 相同的键,但每个批次都会更新值。对于每个请求,从请求中读取请求之间的时间量 队列和传递到输入DStream增长。我认为这是Scheduler Delay。该值可控制 在某种程度上通过调整执行程序的内存和数量。问题是Scheduler Delay随着每个批处理而增长, 几次请求后可能需要几分钟。 Long键永远不会改变,因此HashPartitioner使用相同的键 钥匙每次。它是少量数据,小于100M,但处理范围很广,需要跨节点分布。

为什么Scheduler Delay会如此迅速地增长,特别是因为密钥不会改变?我需要更改什么才能稳定Scheduler Delay?

1 个答案:

答案 0 :(得分:0)

我在这里发现的是,某些处理时间比批处理时间长。在这种情况下,框架永远无法赶上。解决方案是减少批处理时间,或通过增加资源或优化使处理适合批处理时间。