Apache kafka 在spark streaming应用程序中设置spark.streaming.kafka.maxRatePerPartition时,消费速度会减慢

Apache kafka 在spark streaming应用程序中设置spark.streaming.kafka.maxRatePerPartition时,消费速度会减慢,apache-kafka,spark-streaming,Apache Kafka,Spark Streaming,我是Stack Overflow公司的新员工。我正在为我遇到的问题寻求帮助。提前谢谢 我最近正在开发spark流媒体应用程序。有关它的基本信息如下: spark版本:1.6.1 火花流源:卡夫卡 获取数据的方法:直接 持续时间:10秒 卡夫卡版本:2.10_0.8.2.1 卡夫卡主题分区:10 因为kafka集群可能已经存在,并且可能包含大量数据,所以我在spark conf中添加了如下配置: spark.streaming.backpressure.enabled true spark.str

我是Stack Overflow公司的新员工。我正在为我遇到的问题寻求帮助。提前谢谢

我最近正在开发spark流媒体应用程序。有关它的基本信息如下:

  • spark版本:1.6.1
  • 火花流源:卡夫卡
  • 获取数据的方法:直接
  • 持续时间:10秒
  • 卡夫卡版本:2.10_0.8.2.1
  • 卡夫卡主题分区:10
  • 因为kafka集群可能已经存在,并且可能包含大量数据,所以我在spark conf中添加了如下配置:

  • spark.streaming.backpressure.enabled true
  • spark.streaming.kafka.MaxRatePer分区6000
  • 通过这些配置,我成功地限制了spark驱动程序首次启动时的消耗速度。最大事件大小为6000*10*10=600000

    然后我遇到了我的问题。见图

    我没有足够的声誉上传图片,所以我会描述它

    批处理时间输入大小

    2017/04/19 18:08:20100事件

    2017/04/19 18:08:10100事件

    2017/04/19 18:08:0060000事件

    2017/04/19 18:07:2060000事件

    2017/04/19 18:07:1060000事件

    消耗速度突然从60万降到100,我试了好几次,结果都是一样的,重新开始的时候消耗速度是60万,差不多10批之后,速度突然降到100

    我试着减少maxRatePerPartition的数量,但它仍然会逐渐变慢,从30000到2650,最后是100。而且没有出现警告或错误日志。我很困惑


    我在网上搜索了很长时间。但是没有用。请提供帮助或尝试给出一些实现此目的的方法。谢谢。

    如果问题很愚蠢,很抱歉,但是您的kafka群集中是否有超过100条新消息/秒?这看起来你的应用程序正在处理整个kafka缓冲区,然后处理最新消息,因此与插入消息的速率相同。我确信我的kafka群集中仍有大量数据。数字可能是数十亿,我确信数据没有过期。这让我很困惑。我想我已经找到了原因。这个结果与Spark动态速率控制机制有关。配置名称是Spark.streaming.backpressure.pid.minRate。谢谢这对我真的很有帮助。我想知道这只是我的问题!!!!spark.streaming.backpressure.pid.minRate您设置的值是多少?如果这个问题很愚蠢,很抱歉,但是您的kafka群集中是否有超过100条新消息/秒?这看起来你的应用程序正在处理整个kafka缓冲区,然后处理最新消息,因此与插入消息的速率相同。我确信我的kafka群集中仍有大量数据。数字可能是数十亿,我确信数据没有过期。这让我很困惑。我想我已经找到了原因。这个结果与Spark动态速率控制机制有关。配置名称是Spark.streaming.backpressure.pid.minRate。谢谢这对我真的很有帮助。我想知道这只是我的问题!!!!spark.streaming.backpressure.pid.minRate您设置的值是多少?