kafka啥时候换leader?

Posted

技术标签:

【中文标题】kafka啥时候换leader?【英文标题】:When does kafka change leader?kafka什么时候换leader? 【发布时间】:2015-12-25 11:15:19 【问题描述】:

我已经运行了一年与 kafka 合作的服务,并且没有发生领导者的自发变化。 但是在过去的两周里,这种情况经常发生。 Kafka 登录:

[2015-09-27 15:35:14,826] 信息 [代理 2 上的 ReplicaFetcherManager] 删除了分区 [myTopic] (kafka.server.ReplicaFetcherManager) 的 fetcher [2015-09-27 15:35:14,830] INFO 将日志 myTopic-0 截断到偏移 11520979。(kafka.log.Log) [2015-09-27 15:35:14,845] 警告 [代理 2 上的副本管理器]:从分区 [myTopic,0] 上的客户端 ReplicaFetcherThread-0-2 获取相关 ID 为 713276 的请求失败,因为领导者不是本地的用于代理 2 (kafka.server.ReplicaManager) 上的分区 [myTopic,0] [2015-09-27 15:35:14,857] 警告 [代理 2 上的副本管理器]:由于分区 [myTopic,0] 上的客户端 mirrormaker-1 的相关 ID 为 256685 的获取请求失败,因为领导者不是分区的本地代理 2 (kafka.server.ReplicaManager) 上的 [myTopic,0] [2015-09-27 15:35:20,171] INFO [ReplicaFetcherManager on broker 2] 删除了分区 [myTopic,0] (kafka.server.ReplicaFetcherManager) 的 fetcher

什么会导致切换领导者?如果某些 kafka 文档中有信息 - 请 - 只需指向链接。我没找到。


系统配置

kafka 版本:kafka_2.10-0.8.2.1

操作系统:Red Hat Enterprise Linux Server 6.5 版(圣地亚哥)

server.properties(不同于默认值):

broker.id=001 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.flush.interval.messages=10000 log.flush.interval.ms=1000 log.retention.bytes=-1 受控.shutdown.enable=true auto.create.topics.enable=false

【问题讨论】:

你能否用 kafka 版本、操作系统详细信息和 kafka 的 server.properties 更新你的答案。 @garry 我已经添加了当前系统配置。 【参考方案1】:

该分区的主要代理似乎已关闭。可能是 server.properties 中配置的 data directroy(log.dirs) 空间不足,broker 无法容纳。 另外,主题的复制因子和代理的集群大小是多少?

【讨论】:

我监控服务上的可用空间 - 没关系。 Topic:myTopic PartitionCount:1 ReplicationFactor:2 Configs:retention.bytes=100000000000 Topic: myTopic Partition: 0 Leader: 2 Replicas: 2,1 Isr: 1,2【参考方案2】:

我假设您有一个主题和一个复制因子为 2 的分区。对于最佳 Kafka 性能和消费者来说,这不是一个好的配置。

您的日志不够清晰,无法切换领导者。由于唯一的分区,您的主题中的主要问题可能是只有一个领导者。现在,您日志中的单个文件的大小每天都在变大。 Kafka 在内部进行了某种程度的再平衡(细节尚未确认)。这可能是您更换领导者的原因。但我不确定。

还在您的第二条日志行中,它说某些日志被截断。您能否详细查看日志并检查这是否仅在截断后才发生?

正如您已经提到的,您已经检查了 Kafka 日志目录文件及其大小。当您遇到此问题时,请运行描述。领导者切换也将在这里反映出来。或者,如果您可以设置一些仪表板来显示过去时间的领导者。这样你就很容易找到根本原因了。

bin/kafka-topics.sh --describe --zookeeper Zookeeperhost:Port --topic TopicName

建议:我建议您创建一个包含更多分区的新主题(阅读 Kafka 文档以了解最佳分区数)并开始写入。或者您可以查看如何更改当前主题的分区。

最后一件事:领导者切换是否会导致您的客户出现一些问题,或者您只担心警告?

【讨论】:

以上是关于kafka啥时候换leader?的主要内容,如果未能解决你的问题,请参考以下文章

如何运用zookepper进行kafka Leader Election?

kafka leader平衡策略

kafka备份机制——zk选举leader,leader在broker里负责备份

kafka入门之broker-水印和leader epoch

Kafka Topic Leader 切换 SOP

kafka unclean 配置代表啥,会对 spark streaming 消费有什么影响?