卡夫卡重新分配__consumer_offsets不正确?

时间:2017-09-18 23:21:39

标签: apache-kafka replication

我对kafka-reassignment-paritions如何为__consumer_offsets主题起作用感到困惑?

我从1个zk和1个kafka代理开始,创建一个复制= 1,分区= 1的测试主题。消费和生产。工作正常。

我看到创建了__consumer_offsets主题。

现在我添加第二个代理, offsets.topic.replication.factor = 2 。 我跑了,

kafka-reassign-partitions --zookeeper zookeeper1:2181 --topics-to-move-json-file topics-to-move.json --broker-list“101,102” - 生成

生成的重新分配看起来不正确。即使有2个实时经纪人,也只显示一个副本。

我希望为每个分区获取以下副本: [101,102]或[201,101]

{
  "version": 1,
  "partitions": [
    {
      "topic": "__consumer_offsets",
      "partition": 19,
      "replicas": [101]
    },
    {
      "topic": "__consumer_offsets",
      "partition": 30,
      "replicas": [102]
    },
    {
      "topic": "__consumer_offsets",
      "partition": 47,
      "replicas": [101]
    }, ...

感谢任何建议。

-Vms

2 个答案:

答案 0 :(得分:4)

如果要增加主题的复制因子,请按照以下步骤操作:

  1. 创建包含重新分配计划的json文件。在您的情况下,该文件可能如下所示:

    {"version":1, "partitions":[
      {"topic":"__consumer_offsets","partition":0,"replicas":[101,102]}, 
      {"topic":"__consumer_offsets","partition":1,"replicas":[102,101]},
      {"topic":"__consumer_offsets","partition":2,"replicas":[101,102]},
      {"topic":"__consumer_offsets","partition":3,"replicas":[102,101]},
      ...
      {"topic":"__consumer_offsets","partition":49,"replicas":[101,102]}
    ]}
    
  2. 运行以下命令以增加此内部主题的RF:

    bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file reassign.json --execute
    
  3. 然后运行kafka-topics.sh --describe以查看复制因子是否达到2。

答案 1 :(得分:0)

您可以使用重新分配工具来生成json以获得自己的优势。在您的topic-to-move.json文件中,不要放置分区值,而要放置{"version":1, "topics":[{"topic":"__consumer_offsets"}]}

现在,当您运行kafka-reassign-partitions --zookeeper zookeeper1:2181 --topics-to-move-json-file topics-to-move.json --broker-list "101,102" --generate时,将从工具中获得建议的分区分配。

将该文件另存为reassignment-proposed.json,并将旧的任务存储到rollback.json中。

使用该文件开始重新分配/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file reassignment-proposed.json --execute 使用--verify选项

验证分配