Kafka擴容之分區擴容

分區擴容

舉例,主題「user_order」目前是1個分區,這裏將該主題分區增長到6個,觀察修改結果
kafka-topics.sh --partitions 6 --alter --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic user_order

這裏只是修改分區數,可是數據尚未遷移過去shell

使用kafka提供的工具kafka-reassign-partitions.sh來遷移數據。遷移數據須要分三步作:json

  1. 生成遷移計劃
    先手動生成一個topic.json,內容以下。這裏topic能夠是一個列工具

    {
    "topics": [{
        "topic": "user_order"
    }],
    "version": 1
    }

    執行以下語句 --topics-to-move-json-filecode

    ./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topics-to-move-json-file topic.json --broker-list "0,1,2,3,4" --generate

    這句命令的意思是,將topic.json裏的topic遷移到broker-list列表裏列的broker上,會獲得一個遷移執行計劃kafka

    Current partition replica assignment {
        "version": 1,
        "partitions": [....]
    }
    Proposed partition reassignment configuration {
        "version": 1,
        "partitions": [.....]
    }

    新建一個文件reassignment.json,保存上邊這些信息。其中Current partition replica assignment指當前的分區狀況,Proposed partition reassignment configuration是計劃的分區狀況it

  2. 數據遷移
    執行以下命令io

    ./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --execute
  3. 驗證class

    ./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --verify
相關文章
相關標籤/搜索