【发布时间】:2019-05-12 19:18:23
【问题描述】:
我正在运行 kafka-connect 分布式设置。
我正在使用单个机器/进程设置(仍处于分布式模式)进行测试,效果很好,现在我正在使用 3 个节点(和 3 个连接进程),日志不包含错误,但是当我提交s3-connector 通过rest-api请求,返回:{"error_code":409,"message":"Cannot complete request because of a conflicting operation (e.g. worker rebalance)"}。
当我在其中一个节点上停止 kafka-connect 进程时,我实际上可以提交作业并且一切运行正常。
我的集群中有 3 个 broker,topic 的分区号是 32。
这是我要启动的连接器:
{
"name": "s3-sink-new-2",
"config": {
"connector.class": "io.confluent.connect.s3.S3SinkConnector",
"tasks.max": "32",
"topics": "rawEventsWithoutAttribution5",
"s3.region": "us-east-1",
"s3.bucket.name": "dy-raw-collection",
"s3.part.size": "64000000",
"flush.size": "10000",
"storage.class": "io.confluent.connect.s3.storage.S3Storage",
"format.class": "io.confluent.connect.s3.format.avro.AvroFormat",
"schema.generator.class": "io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator",
"partitioner.class": "io.confluent.connect.storage.partitioner.TimeBasedPartitioner",
"partition.duration.ms": "60000",
"path.format": "\'year\'=YYYY/\'month\'=MM/\'day\'=dd/\'hour\'=HH",
"locale": "US",
"timezone": "GMT",
"timestamp.extractor": "RecordField",
"timestamp.field": "procTimestamp",
"name": "s3-sink-new-2"
}
}
日志中没有任何内容表明有问题,我真的迷路了。
【问题讨论】:
-
如有必要,将从日志中提供更多信息 :)
-
我想我明白了,我有 3 个工人和 32 个分区/任务。我认为 kafka-connect 试图在 3 个工作人员之间平均分配工作,并且无法(32 / 3 = 10.66667)。明天我会用 4 名工人进行测试。
-
我之前看到过这个错误,
rest.advertised.host.name无法在每个工作人员上解决 -
感谢您的评论,至少可以说缺少有关此配置参数的文档。这究竟应该解决什么问题?其中一名工作人员的主机名?,我认为他们严格通过 kafka 进行通信。
-
需要设置为机器的外部主机或IP,端口设置为
rest.port。但是据我所知,重新平衡和 REST 请求直接在工作人员之间进行通信,而不仅仅是通过 Kafka。如果这不是问题,那么消费者组实际上正在重新平衡,并且集群中可能存在其他不稳定性,而不仅仅是 Connect
标签: apache-kafka apache-kafka-connect confluent-platform