宗旨:Spark Streaming 消费 Kafka一定要保证在批次时间内完成业务的处理,若出现处理延迟累加,最终可能会导致雪崩的现象。
1.kafkaStream消费者配置调优:
- spark.streaming.kafka.maxRatePerPartition : 一个分区一秒拉取得消息数上限,这个生产必须配置,极度重要的一个参数,该参数在Direct API 才会有效
- spark.streaming.backpressure.enabled:是否开启背压机制,根据上一批次的处理时长以及延迟时长,动态决定当前批次的拉取消息的速度。这个生产必须配置,因为即使开启了上限配置,但是设置是死的,数据存在低峰和高峰之分,还会存在一定资源的浪费,以及处理效率问题,注意:背压得到值一定是小于设置的上限数的。
- spark.streaming.backpressure.initialRate:第一个批次初始的拉取消息数,个人觉得在开启拉取上限后该参数无需配置。
- spark.streaming.stopGracefullyOnShutdown:是否开启优雅的关闭程序,当SparkContext关闭时,不直接关闭正正在出处理消息的程序,而是等待当前批次的消息处理完毕后才关闭。这个生产必须配置,不然大可能会出现丢数据或者重复消费的问题