将Kafka主题迁移到新的集群(以及对Druid的影响)

wd2eg0qa  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(194)

我正在从Kafka的主题中将数据吸收到Druid中。现在我想将我的Kafka主题迁移到新的Kafka集群中。有什么方法可以做到这一点,而不会出现数据重复和停机?
我已经考虑了以下可能的方法来迁移主题到新的Kafka集群。

  • 手动迁移:
  • 在新的Kafka群集中创建一个具有相同配置的主题。
  • 停止在Kafka群集中推送数据。
  • 开始在新集群中推送数据。
  • 停止从旧群集使用。
  • 从新群集开始使用。
  • 在两个Kafka集群中生成数据:
  • 在新的Kafka群集中创建一个具有相同配置的主题。
  • 开始在两个Kafka集群中生成消息。
  • 在Druid中更改Kafka主题配置。
  • 重置德鲁依中Kafka主题偏移量。
  • 从新群集开始使用。
  • 成功迁移后,停止在旧Kafka集群中进行生产。

1.使用镜像生成器2:

  • MM2在一个新的簇中创建Kafka的主题。
  • 开始复制两个群集中的数据。
  • 将生产者和消费者移动到新的Kafka集群。

1.这种方法的问题在于:

  1. Druid管理Kafka主题在其元数据中的偏移量。
  2. MM2将在新群集中创建两个同名(带前缀)的主题。
    1.Druid支持正则表达式的主题名吗?

注意:Druid在其元数据中管理Kafka主题偏移量。

  • Druid版本:0.22.1

旧Kafka集群版本:2.0个 *

dgiusagp

dgiusagp1#

也许你的数字1可以稍微修改一下:
1.开始发布到新群集。
1.等待当前主管补齐旧主题中的所有数据。
1.挂起Supervisor。这将强制所有任务写入和发布段。等待此Supervisor的所有任务成功。这是“停机”开始的地方。当我们切换到新集群时,所有当前接收的数据仍然是可查询的。新数据正在新集群中累积,但不会在Druid中接收。
1.当前数据源的所有偏移信息都存储在元数据存储中,使用
delete from druid_dataSource where datasource={name}
1.终止当前主管。
1.提交带有新主题和新服务器信息的新规范。

mftmpeh8

mftmpeh82#

选项1和2将出现停机,并且您将丢失现有主题中的所有数据。
选项2不能保证在您尝试同时向多个群集发送消息时不会丢失数据或生成重复项。
如果不尝试MM 2,将无法将Druid/Kafka偏移数据迁移到新集群。您说可以在选项2中重置偏移,那么为什么不对选项3做同样的操作呢?我没有使用过Druid,但它应该能够支持从多个主题消费,无论是否使用模式。使用选项3,在对迁移过程满意之前不需要修改任何生产者代码。

mu0hgdu0

mu0hgdu03#

您可以执行下列步骤:
1-在新集群上,创建新主题(相同名称或新名称都可以)
2-更改您的应用程序配置以将消息发送到新的Kafka群集
3-等到Druid消耗掉所有来自旧Kafka的信息,你可以通过检查主管的滞后和偏移信息来确保数据何时被消耗
4-暂停任务,等待任务发布其分段并成功退出
5-编辑Druid的数据源,确保useEarliestOffset设置为true,更改信息以从新Kafka簇中使用(如果不相同,则更改新的主题名称)
6-保存架构并恢复任务,Druid在检查偏移量时会碰壁,因为它在新Kafka中找不到它们,然后从头开始

相关问题