【问题标题】:Running a single kafka s3 sink connector in standalone vs distributed mode在独立与分布式模式下运行单个 kafka s3 sink 连接器
【发布时间】:2020-05-09 21:09:49
【问题描述】:

我有一个包含 10 个分区的 kafka 主题“mytopic”,并希望使用 S3 sink connector 将记录下沉到 S3 存储桶。出于扩展目的,它应该在多个节点上运行,以将分区数据并行写入同一个 S3 存储桶。

在 Kafka connect user guide 和许多其他博客/教程中,建议以分布式模式而不是独立模式运行工作线程,以实现更好的可扩展性和容错:

...分布式模式在可扩展性方面更加灵活,并提供高可用性服务的附加优势,以最大限度地减少停机时间。

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

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

我的理解是正确的还是我遗漏了什么?

很遗憾,除了this google groups discussion,我找不到更多关于这个主题的信息,作者得出了与我相同的结论。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    你不需要运行,独立进程的多个实例,Kafka Worker 负责分布式模式下的任务分配、再平衡、偏移管理,你需要指定相同的组 id ...

    【讨论】:

      【解决方案2】:

      理论上,这可能可行,但您最终会通过 ssh 连接到多台机器,它们具有基本相同的配置文件,只是不使用 connect-distributed 命令而不是 connect-standalone

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

      底层任务代码都是一样的,只是入口点和偏移存储不同。那么,如果您有多台机器,为什么不直接使用分布式呢?

      【讨论】:

      • 我的第一点呢?是否会有任何并行处理,或者我只有 1 名工人来完成所有工作?
      • 如果你运行多台服务器,那么任务就会分布在它们之间。它的工作方式与普通消费者组没有什么不同
      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 2019-06-22
      • 2021-10-15
      • 2020-12-11
      • 2021-11-08
      • 2022-01-12
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多