如何从托管的kafka集群转储数据并将数据导入本地kafka集群?

时间:2018-01-06 16:13:29

标签: apache-kafka kubernetes

我在kubernetes中有一个Kafka群集,其中包含大量测试数据。我希望将部分/全部测试数据导入到我的本地Kafka集群中。这样,我可以更容易地使用来自kubernetes的实际数据在本地环境中执行测试。

那么,有没有办法将例如: 5000条来自kafka主题的消息转储到文件中并将它们恢复为本地kafka主题?

2 个答案:

答案 0 :(得分:2)

  1. Replicator是一种商业工具,可让您将主题从一个群集复制到另一个群集。与MirrorMaker类似,它旨在复制整个主题,而不仅仅是其中的一部分。

  2. 如果您只是想要某种hacky选项,可以将kafkacatstdin / stdout一起使用,但需要分区,主题配置以及所有这些内容。 d想要匹配准确的测试,你必须确保正确完成。

答案 1 :(得分:2)

我们这样做的方式(不是在Kubernetes上,但在这种情况下无关紧要)是:

  1. 如果我们需要将生产集群中的某些部分数据复制到本地/测试集群 - 我们启动一个Flume代理,该代理从prod Kafka集群读取并推送到测试集群。这仅适用于实时数据(当您现在开始复制过程并让它运行所需的任何时间,捕获实时流量),或者如果可以从EARLIEST偏移量开始获取数据 - 因为vanilla Flume本身不允许您指定要从主题消耗的特定偏移范围(AFAIK)
  2. 如果我们确实需要来自非常特定的偏移范围的数据 - 我们只需运行一个非常简单的Java客户端(我们自己的自定义代码,只需几行代码),它们寻找起始偏移并读取直到指定的结束偏移量源集群/主题 - 并将事件发送到目标Kafka集群/主题
  3. 我们发现这些方法使用更复杂的工具/框架(如MirrorMaker)更简单,更灵活。