You need to enable JavaScript to run this app.
导航
进阶使用
最近更新时间:2025.04.01 20:13:41首次发布时间:2024.11.12 16:54:09
我的收藏
有用
有用
无用
无用

本文将为您介绍火山引擎 LAS Kafka 组件相关的高阶使用,方便您更深入的使用 Kafka。

扩容方案

您可以在 LAS 控制台的集群管理页面,进行 Kafka 集群的扩容操作。开源 Kafka 扩容新的 Broker 后,流量不会自动迁移到新 Broker 上。通常有两种方式将流量迁移到新的 broker。

  • 扩分区:脚本直接扩容分区。比如之前有 12 个分区,扩容到 24 个分区。新分区会根据策略分配到新的 Broker 上,是最简单的方式。缺点是老的分区还是在老的 Broker 上,集群整体上流量是不均衡的。
  • Reassign:这种方式即迁移分区数据到新的 Broker,步骤相对复杂。

扩分区

执行以下命令实现扩分区操作:

/usr/lib/emr/current/kafka/bin/kafka-topics.sh --alter --zookeeper {zookeeper_connect} --topic {topic} --partitions {num}

Reassign 进行数据均衡

针对已有分区数已经超过 24,且数据占比较大的情况,则考虑使用如下方式进行均衡。
脚本:kafka-reassign-partitions.sh,其主要的三个操作:

  • --generate:生成分区重分配计划
  • --execute:执行分区重分配计划
  • --verify:验证分区重分配结果

选择要处理的 topic

将要处理的 topic 信息按照如下格式保存到 JSON 文件。例如要处理的 topic 为 test,则将 topic 信息保存为 topic_test.json,内容如下:

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

生成分区重分配计划

获取执行计划
可以参考下面的命令。
参数 --broker-list 中的 broker 标识,是 broker.id 值。集群的 broker.id 都填写上,即生成建议的分区信息。

sh bin/kafka-reassign-partitions.sh --zookeeper {zookeeper_connect}  --topics-to-move-json-file {topic_test.json} --broker-list "1001,1002,1003,1004,1005,1006" --generate

保存目标分区信息
执行完 generate 命令,会有两个 JSON 数据:

  • 第一个是 Current partition replica assignment,即当前的分配。
  • 另一个是建议的分配:Proposed partition reassignment configuration,即要保存的文件。

建议的分配保存为 JSON,例如:topic_test_reassignment.json

执行分区重分配计划

sh bin/kafka-reassign-partitions.sh --zookeeper {zookeeper_connect} --reassignment-json-file  {topic_test_reassignment.json} --execute

验证分区重分配结果

sh bin/kafka-reassign-partitions.sh --zookeeper {zookeeper_connect} --reassignment-json-file  {topic_test_reassignment.json}  --verify

结果都为 successfully 即成功。如果数据量大,可能需要等待一段时间。