在独立模式和分布式模式下运行单个kafka s3接收器连接器

时间:2020-01-23 14:47:27

标签: apache-kafka apache-kafka-connect

我有一个带有10个分区的kafka主题“ mytopic”,并想使用S3 sink connector将记录下沉到S3存储桶中。为了进行扩展,它应该在多个节点上运行,以将分区数据并行写入同一S3存储桶。

在Kafka connect user guide以及实际上许多其他博客/教程中,建议以分布式模式而不是独立模式运行worker,以实现更好的可伸缩性和容错能力:

...分布式模式在可伸缩性方面更加灵活,并提供了高可用性服务的额外优势,可最大程度地减少停机时间。

我想弄清楚要为我的用例选择哪种模式:让一个逻辑连接器在多个节点上并行运行。我的理解如下:

  1. 如果我以分布式模式运行,由于将其视为一个连接器任务,最终将只有1个工人处理所有分区。
  2. 相反,我应该在多个节点上以独立模式运行。在那种情况下,我将拥有一个使用者组并实现分区的并行处理。
  3. 在上述独立方案中,我实际上将具有容错能力:如果一个实例死亡,则消费组将重新平衡,其他独立工作者将处理释放的分区。

我的理解正确吗?还是我缺少什么?

不幸的是,除了this google groups discussion以外,我找不到关于该主题的太多信息,在这里作者得出了与我相同的结论。

2 个答案:

答案 0 :(得分:1)

从理论上讲,这可能行得通,但是您最终将ssh-sing到多台计算机上,它们具有基本相同的配置文件,而只是不使用connect-distributed命令而不是connect-standalone

不过,您缺少有关Connect服务器任务重新平衡的部分,该部分通过Connect服务器REST端口进行通信

基础任务代码完全相同,只是入口点和偏移量存储不同。那么,如果您有多台计算机,为什么不只使用分布式?

答案 1 :(得分:1)

您无需运行,多个独立进程实例,Kafka工人将负责在分布式模式下分配任务,重新平衡,抵消管理,您需要指定相同的组ID ...