当前位置: 首页 > 知识库问答 >
问题:

Kafka Connect可以被机架感知,以便我的连接器从一个代理读取所有分区吗?

卓胜
2023-03-14

我们在Amazon MSK中有一个Kafka集群,在同一地区的不同可用性区域中有3个代理。我想建立一个Kafka Connect连接器,将所有数据从我们的Kafka代理备份到Amazon S3,我正在尝试使用MSK Connect。

我在MSK Connect上设置了ConFluent的S3接收器连接器,它可以工作——所有内容都按预期上传到S3。问题是它在数据搬迁费用上花费了一大笔钱——每当连接器运行时,我们在MSK的AWS账单几乎翻了一番,欧盟-DataTransfer-Rational-Bytes占了全部增长。

连接器似乎正在从我们的所有三个代理中提取消息,即来自三个不同的AZ,因此我们要为跨AZ数据搬迁付费。这是有道理的,因为默认情况下它会从该分区的领导者(可能是三个代理中的任何一个)读取分区。但是,如果我们创建的是普通消费者,而不是连接器,则可以限制消费者从特定代理读取所有分区:

"client.rack" : "euw1-az3"

☝️ 对于 euw1-az3 AZ 中的使用者,此设置使使用者从本地代理读取所有分区,而不管分区的领导者如何 - 这避免了对可用区间数据传输的需求,并大大降低了账单。

我的问题是,是否有可能为Kafka连接器做类似的事情?我必须将哪些配置设置传递给连接器或工作线程,以使其仅从一个特定的代理/可用区读取?这可以通过 MSK 连接实现吗?

共有2个答案

阎德辉
2023-03-14

AWS在与支持人员的通话中向我确认,MSK连接目前不支持机架感知。通过将连接器部署在EC2实例(不在MSK连接上)中,并将连接工作器配置< code > consumer . client . rack 设置为运行EC2实例的同一可用性区域,我能够解决我的问题。

宗政功
2023-03-14

也许我错过了关于你的问题的一些东西。我想你想看看这个:

https://docs . confluent . io/platform/current/tutorials/examples/multi region/docs/multi region . html

replica.selector.class=org.apache.kafka.common.replica.RackAwareReplicaSelector

虽然这是一般知识,但它适用于任何本地或云部署。

 类似资料:
  • 我参考了以下链接来了解Kafka的HDFS连接https://docs.confluent.io/2.0.0/Connect/connect-hdfs/docs/index.html 我能够通过配置单元集成将数据从Kafka导出到HDFS。 现在我正尝试在Java程序的帮助下将avro记录写入Kafka 当我把Avro记录写到Kafka主题时,我在Connect中出现以下错误

  • 使用Kafka Simple Consumer可以读取多个分区吗?简单使用者在以下情况下使用分区: https://cwiki.apache.org/confluence/display/KAFKA/0.8.0SimpleConsumer示例

  • 我有一个多分区主题,由多个使用者(同一组)使用。我的目标是最大化消费处理,即任何消费者都可以消费来自任何分区的消息。 我知道这看起来是不可能的,因为只有一个消费者可以从一个分区中消费。 有没有可能使用REST代理来实现这一点?例如,轮询所有代理消费者实例。 谢了。

  • 我有一个由两个进程使用的SQLite数据库。我想知道,使用SQLite的最新版本,当一个进程(连接)启动事务向数据库写入时,另一个进程是否能够同时从数据库读取?

  • 我们计划编写一个Kafka消费者(java),它读取Kafka队列以执行消息中的操作。

  • 我必须使用Flink作为流引擎处理来自Kafka的数据流。为了对数据进行分析,我需要查询Cassandra中的一些表。做这件事最好的方法是什么?我一直在Scala中寻找这样的例子。但是我找不到任何数据。如何使用Scala作为编程语言在Flink中读取来自Cassandra的数据呢?使用apache flink Java API将数据读写到cassandra中也有同样的问题。答案中提到它有多种方法。