卡夫卡 HA + flume。如何使用 Flume 的 Kafka HA 配置?

Kafka HA + flume. How can I use the Kafka HA configuration with Flume?

环境

问题

目前,在我们的架构中,
我们正在使用 Flume 和 Kafka 通道,没有源和接收器到 HDFS。

以后打算用kafka mirror maker搭建kafka HA集群
所以,即使一个集群关闭,我也尝试使用它,这样连接到另一个集群就不会出现失败的问题。

为此,我认为我们需要使用 Flume 的正则表达式模式订阅主题。

假设集群A和集群B存在,两个集群有一个topic叫ex。
镜像制作者互相复制ex,所以集群A有topic:ex,b.ex集群 B 的主题为:ex, a.ex.

例如,在从集群A读取e和b.e时,如果出现故障,它会尝试去对面的集群读取ex和a.ex。

如下所示。

test.channel = c1 c2
c1.channels.kafka.topics.regex = .*e (impossible in kafka channel)
...

c1.source.kafka.topics.regex = .*e (possible in kafka source)

在 flume kafka 源的情况下,有一个 属性 可以将主题读取为正则表达式模式。
但是这个属性在频道中不存在

有什么好的方法吗?
如果您能提出更好的方法,我将不胜感激。谢谢。

当然,最好使用正则表达式或简单地使用两个主题的列表,但是您最终会根据主题名称将数据拆分到不同的目录中,让 HDFS 客户端将数据合并回一起

频道包含制作人,因此无法使用正则表达式

By going to the opposite cluster

Flume 不可能自动执行此操作,除非您修改其 bootstrap 服务器配置并重新启动它。这同样适用于任何 Kafka 客户端,真的......这并不是我所说的“高可用”,因为所有指向宕机集群的客户端都会遇到停机

相反,您应该使用来自每个集群的 Flume 管道(或 Kafka Connect)。话虽这么说,MirrorMaker 只会制作您的数据的额外副本或允许客户端出于自己的目的使用来自其他集群的数据,而不是充当 backup/fallback

旁白:问题不清楚,但请确保您使用的是 MirrorMaker2,这也意味着您已经在使用 Kafka Connect,因此可以安装 HDFS 接收器而不是需要 Flume