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<String, Object> kafkaParams = new HashMap<>();

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

反压机制

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

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

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

  • 实际处理时长

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

  • 当前批次的数据条数

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容