Spark Streaming 重启后Kafka数据堆积调优

问题:

当应用由于各种其它因素需要暂停消费时,下一次再次启动后就会有大量积压消息需要进行处理,此时为了保证应用能够正常处理积压数据,需要进行相关调优。

另外对于某个时刻,某个topic写入量突增时,会导致整个kafka集群进行topic分区的leader切换,而此时Streaming程序也会受到影响。

所以针对以上问题我们进行了如下调优:

  1. spark.streaming.concurrentJobs=10:提高Job并发数,读过源码的话会发现,这个参数其实是指定了一个线程池的核心线程数而已,没有指定时,默认为1。

  2. spark.streaming.kafka.maxRatePerPartition=2000:设置每秒每个分区最大获取日志数,控制处理数据量,保证数据均匀处理。

  3. spark.streaming.kafka.maxRetries=50:获取topic分区leaders及其最新offsets时,调大重试次数。

  4. 在应用级别配置重试
    spark.yarn.maxAppAttempts=5
    spark.yarn.am.attemptFailuresValidityInterval=1h

此处需要【注意】:
spark.yarn.maxAppAttempts值不能超过hadoop集群中yarn.resourcemanager.am.max-attempts的值,原因可参照下面的源码或者官网配置。

《Spark Streaming 重启后Kafka数据堆积调优》

    原文作者:尼小摩
    原文地址: https://www.jianshu.com/p/63f52743ae77
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞