【问题标题】:Confluent kafka-connect-s3 same source multiple sinksConfluent kafka-connect-s3 同源多个sink
【发布时间】:2020-06-15 21:21:25
【问题描述】:

我正在使用 Confluent's Kafka s3 connect 将数据从 apache Kafka 复制到 AWS S3。对于我们的用例,我们希望将数据从 Kafka 复制到多个 S3 存储桶。

一个 S3 存储桶具有这样的分区策略 -

s3.bucket.name=kafka-s3-test1
partitioner.class=io.confluent.connect.storage.partitioner.TimeBasedPartitioner
timestamp.extractor=Wallclock
locale=US
timezone=UTC
partition.duration.ms=3600000
path.format='ds'=YYYY-MM-dd/'hour'=HH

而另一个 S3 存储桶具有这样的分区策略 -

s3.bucket.name=kafka-s3-test2
partitioner.class=com.custom.CustomFieldPartitioner
partition.field.name= eventPlatform, eventType, eventDate

一种明显的方法是为每个接收器维护 2 个不同的 kafka-connect 集群。 我想知道是否有办法将相同的数据发送到 2 个不同的接收器(如这个用例)? 如果没有,我该如何扩展这个库来实现相同的功能?

我们将不胜感激。

【问题讨论】:

    标签: amazon-s3 apache-kafka apache-kafka-connect


    【解决方案1】:

    您只需要一个集群。存储桶是一个可配置的属性(s3.bucket.name)

    如果您有不同的 AWS S3 凭证来访问存储桶,那么您将需要单独的 Java 进程(这可能会导致单独的集群,但不是必需的)

    【讨论】:

    • 谢谢。我已经更新了属性文件 sn-p 以包含存储桶名称。两个存储桶都在同一个 AWS 账户中。所以这不是问题。但是如何在同一个 java 进程中使用 2 个不同的 s3-sink.property 文件?
    • connect-standalone.sh worker.properties s3-sink1.properties s3-sink2.properties... 或者您应该运行connect-disributed,因为它具有容错性
    • 谢谢。我尝试使用这样的“connect-standalone.sh worker.properties s3-sink1.properties s3-sink2.properties”,但事件被推送到 sink1 或 sink2 而不是两者。我可以看到 sink1 中存在但 sink2 中没有的事件。所以不确定这是否是这个用例的正确解决方案。
    • 它向您保证确实如此。请确认您的主题是积极制作的
    • ok.. 让我生成一些测试数据并再次检查。另一方面,如果我使用上面提到的 2 个接收器,Kafka 连接是否在内部维护事务?如果将数据写入其中一个接收器后 Kafka 连接崩溃会发生什么?由于在这种情况下,两个接收器将使用相同的 Kafka 偏移量,那么如何处理失败?
    猜你喜欢
    • 2022-05-31
    • 2021-04-12
    • 2022-07-12
    • 2018-12-29
    • 2017-03-26
    • 2018-06-16
    • 2018-10-20
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多