【问题标题】:kafka partition and producer relationshipkafka分区和生产者关系
【发布时间】:2017-04-28 01:00:54
【问题描述】:

我有一个 kafka 集群,其中包含三个代理和一个主题,复制因子为三个和三个分区。我可以看到每个代理都有一个相同大小的所有分区的日志副本。该主题有两个制作人。

有一天,我将一位制作人的写作量减少了一半。然后我发现三个broker的入站流量都减少了,这是意料之中的,但是只有分区1的leader节点的出流量减少了,我不明白。

分区领导者的出站流量因复制而减少。但是每个broker都是一个partition的leader,为什么只有一个leader的outbound流量减少了呢?生产者是否可能只将内容写入一个分区?虽然我不这么认为。

请帮我解释一下。集群现在工作正常,但我需要了解它以防潜在问题。

【问题讨论】:

  • 视情况而定。您能否检查每个分区的偏移量以查看您是否均匀地生成消息?
  • 感谢您的提醒。我检查了所有三个分区的日志大小。实际上,它们的产生并不均匀。这很有趣。不平衡很大,例如 1:6。可能是因为 ravthiru 提到的,删除特定键会导致特定分区没有数据。

标签: hadoop apache-kafka kafka-producer-api


【解决方案1】:

假设您使用的是 KafkaProducer 的 Default Partitioner,这意味着具有相同 key 的两个事件可以保证发送到同一个分区。

来自Kafka Documentation

所有的读写都去partition的leader和followers 像普通的 Kafka 消费者一样消费来自领导者的消息 并将它们应用到自己的日志中。

您可以通过跳过特定键或一组键来减少数据(来自生产者),这可能意味着特定分区没有数据。

这回答了为什么leader的出站流量减少了(没有记录供follower消费)

【讨论】:

  • 谢谢拉夫蒂鲁。你的意思是我减少的数据删除了导致特定分区没有数据的特定键?不平衡很大(6次),怎么会这么大?我的意思是,为什么kafka在不同的分区之间会有这么大的不平衡?
  • 根据 Kafka 文档“默认分区策略是 hash(key)%numPartitions”。现在您可以分析分区是如何加载的
猜你喜欢
  • 2018-02-05
  • 2023-03-26
  • 2019-03-06
  • 2019-02-03
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
相关资源
最近更新 更多