SparkStreaming限速

SparkStreaming限速

Spark端限速

调整spark.streaming.kafka.maxrateperpartiton参数,它可以控制每秒处理的消息数

Kafka端限速

为某一个消费者设置每秒消费的字节数如下:

$ bin/kafka-configs.sh --zookeeper localhost:2181

--alter

--add-config 'consumer_byte_rate=15728640'

--entity-type clients

--entity-name clientA

然后在sparkstreaming配置消费者的id为“clientA”

Map kafkaParams = new HashMap<>();

kafkaParams.put("client.id", "clientA");

反压机制

以上两种方法有一个弊端:都需要人工去计算当前的流量大概是多大。先不说估计的流量准不准,需要在

流量变化后重新修改配置,重启程序。这就不太方便,所有Spark官网出现一个自动根据现在阶段的一些参数来自动就算这个值,并使用令牌桶算法进行限流。

参数
  • 当前批次完成的时间戳

  • 实际处理时长

  • 当前批次调度起来之前的延迟

  • 当前批次的数据条数

如果用户配置了 spark.streaming.receiver.maxRate 或 spark.streaming.kafka.maxRatePerPartition,那么最后到底接收多少数据取决于三者的最小值。也就是说每个接收器或者每个 Kafka 分区每秒处理的数据不会超过

你可能感兴趣的:(SparkStreaming限速)