修改Kafka主题复制因子后会发生什么?

时间:2015-07-02 21:32:25

标签: apache-kafka

根据docs,您只需修改主题即可增加复制因子。

 > bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name 
       --partitions 20 --replication-factor 3 --config x=y

不幸的是,它没有指定修改主题后会发生什么。是否将现有日志段复制到新副本,或仅复制到新消息?

2 个答案:

答案 0 :(得分:1)

对于kafka 10,您需要调用kafka-reassign-partitions.sh脚本来更改主题的复制因子。 以下是一个脚本演示,它将在更改之前和之后显示主题:

updateTopicReplication() {
    TOPIC_NAME=$1
    REPLICAS=$2

    echo "****************************************"
    echo "describe $TOPIC_NAME"
    bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic $TOPIC_NAME

    JSON_FILE=./configChanges/${TOPIC_NAME}-update.json
    echo $JSON_FILE
    [ -e $JSON_FILE ] && rm $JSON_FILE

    touch $JSON_FILE

    echo -e "{\"version\":1, \"partitions\":[{\"topic\":\"${TOPIC_NAME}\",\"partition\":0,\"replicas\":[${REPLICAS}]}]}" >> $JSON_FILE

    echo "****************************************"
    echo "updateing $TOPIC_NAME"
    bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file $JSON_FILE --execute

    echo "****************************************"
    echo "describe $TOPIC_NAME"
    bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic $TOPIC_NAME
}

答案 1 :(得分:-1)

根据我在问题中提到的相同文档,似乎kafka实际上并不支持增加(或减少)主题的复制因子。