卡夫卡什么时候改变领导者?

时间:2015-09-28 08:59:43

标签: apache-kafka

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

  • [2015-09-27 15:35:14,826] INFO [代理商2上的ReplicaFetcherManager] 删除了分区的fetcher [myTopic](kafka.server.ReplicaFetcherManager)
  • [2015-09-27 15:35:14,830] INFO截断日志myTopic-0以抵消11520979.(kafka.log.Log)
  • [2015-09-27 15:35:14,845] WARN [Broker 2上的副本管理器]:由于Leader不是本地的,在分区[myTopic,0]上从客户端ReplicaFetcherThread-0-2获取具有相关ID 713276的请求失败对于代理2上的分区[myTopic,0](kafka.server.ReplicaManager)
  • [2015-09-27 15:35:14,857]警告[代理经理2上的副本管理器]:分区[myTopic,0]上客户端mirrormaker-1的相关ID为256685的请求获取失败,原因是Leader不是本地分区经纪人2上的[myTopic,0](kafka.server.ReplicaManager)
  • [2015-09-27 15:35:20,171] INFO [代理2上的ReplicaFetcherManager]删除了分区的抓取器[myTopic,0](kafka.server.ReplicaFetcherManager)

什么可能导致转换领导者?如果某些kafka文档中有信息 - 请 - 只需指向该链接即可。我找不到。

系统配置

kafka版本:kafka_2.10-0.8.2.1

os: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
  • controlled.shutdown.enable = true
  • auto.create.topics.enable =假

2 个答案:

答案 0 :(得分:1)

看起来像领导经纪人已关闭该分区。可能是server.properties中配置的数据directroy(log.dirs)空间不足,而代理无法容纳。 此外,什么是主题的复制因子和经纪人的群集大小?

答案 1 :(得分:0)

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

您的日志对于领导者切换不够清晰。由于唯一的分区,您主题中的主要问题可能是只有一个领导者。现在,日志中的单个文件的大小越来越大。 Kafka内部在某种程度上进行了重新平衡(细节未得到确认)。这可能是你的领导者转换的原因。但我不确定。

同样在你的第二个日志行中,它说某些日志被截断了。你能不能详细检查日志,检查是否在截断后才发生这种情况?

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

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

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

最后的事情:领导者是否在您的客户中引起了一些问题,或者您只担心警告?