首页 文章

Kafka 什么时候改变领导者?

提问于
浏览
8

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

  • [2015-09-27 15:35:14,826] INFO [代理2上的ReplicaFetcherManager]删除了分区的抓取器[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] WARN [Broker 2上的副本管理器]:在分区[myTopic,0]上从客户端mirrormaker-1获取具有相关性ID 256685的请求失败,因为Leader不是本地分区[myTopic经纪人2上的,0](kafka.server.ReplicaManager)

  • [2015-09-27 15:35:20,171] INFO [代理2上的ReplicaFetcherManager]删除分区的fetcher [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 = false

2 回答

  • 0

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

  • 1

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

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

    同样在你的第二个日志行中,它表示某些日志被截断 . 你能不能详细检查日志,检查是否只在截断后发生?

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

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

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

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

相关问题