Apache spark 如何控制Spark 1.6.2下不断增长的调度程序延迟?
我正在Spark 1.6.2下运行一个流作业,它从队列中获取批处理。我尝试过各种大小的内存和执行器数量,例如:Apache spark 如何控制Spark 1.6.2下不断增长的调度程序延迟?,apache-spark,spark-streaming,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-*.ja
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
每个批处理请求对同一组数据进行重新处理,更新不断变化的值。就是同样的结构,同样的尺寸,,
相同的键,但值会随每个批更新。对于每个请求,从
队列和被传递到输入数据流的数据量增加。我认为这是调度程序延迟。此值可控制为0
在某种程度上,通过调整内存和执行器的数量。问题是调度程序延迟会随着批处理的增加而增加,
几次请求后可能需要几分钟。长键永远不会改变,因此HashPartitioner使用相同的键
每次都有钥匙。数据量很小,不到100米,但处理范围很广,需要跨节点分布
为什么调度程序延迟增长如此之快,特别是在密钥不变的情况下?我需要做哪些更改来稳定调度程序延迟?我在这里发现,某些处理花费的时间比批处理时间长。在这种情况下,框架永远也赶不上。解决方案是要么减少批处理时间,要么通过增加资源或优化使处理适应批处理时间。我在这里发现,一些处理花费的时间比批处理时间长。在这种情况下,框架永远也赶不上。解决方案是减少批处理时间,或者通过增加资源或优化使处理适应批处理时间。您的处理时间是否超过批处理间隔?@NishantKumar-它更长。不过,每批都是单独处理的。我正在提交一批,等待它清除,然后进入下一批。希望集群处于干净状态,处理每个批次时不会受到前一个批次的干扰。您的处理时间是否超过批次间隔?@NishantKumar-更长。不过,每批都是单独处理的。我正在提交一批,等待它清除,然后进入下一批。希望集群处于干净状态,处理每批产品时不会受到前一批产品的干扰。