【问题标题】:How to control a growing Scheduler Delay under Spark 1.6.2?Spark 1.6.2 下如何控制不断增长的调度器延迟?
【发布时间】:2017-07-09 00:07:16
【问题描述】:

我正在 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 增长。我认为这是调度程序延迟。这个值是可控的 在一定程度上通过调整内存和执行者的数量。问题是调度程序延迟随着每个批次而增长, 几个请求后可能需要几分钟。 Long 键永远不会改变,所以 HashPartitioner 使用相同的 每次都是钥匙。数据量很小,不到100M,但处理量大,需要跨节点分散。

为什么调度程序延迟会增长得如此之快,尤其是在密钥不变的情况下?我需要更改什么来稳定调度程序延迟?

【问题讨论】:

  • 您的处理时间是否超过批处理间隔?
  • @NishantKumar - 它更长。但是,每个批次都是单独处理的。我正在提交一个批次,等待它清除,然后进入下一个。希望集群处于干净状态并处理每个批次,而不会受到前一个批次的干扰。

标签: apache-spark spark-streaming


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多