为什么在clickhouse Kafka引擎中,一个队列表的两个Kafka brokers不能同时工作?



我有相当简单的设置插入数据从Kafka到Clickhouse表。我的数据流如下:

create table vflow.queue_ng
(
message String
)
engine = Kafka SETTINGS
kafka_broker_list = '100.127.201.11:9092,100.127.203.13:9092',
kafka_topic_list = 'netflow',
kafka_group_name = 'catflow_ng',
kafka_format = 'JSONAsString';

但是这个表只从一个代理获取数据流! 第一个或第二个,但不能同时来自两个。

对于每个代理(如果它被用作唯一的代理),它工作得很好。

我尝试用一个broker使用队列表,如下所示:


create table vflow.queue_ng
(
message String
)
engine = Kafka SETTINGS
kafka_broker_list = '100.127.203.13:9092',
kafka_topic_list = 'netflow',
kafka_group_name = 'catflow_ng',
kafka_format = 'JSONAsString';

绝对没有问题,但是如果我添加第二个broker并使用kafka_broker_list = '100.127.201.11:9092,100.127.203.13:9092'重新创建表,它只从一个源获取数据。

这个主题有多少分区?
分区分布在代理之间。如果您有一个分区,它将只从一个代理读取。
如果您有多个分区,那么问题可能是如果消息键不是最佳的,则所有消息都被写入一个分区。
第三件事是主题的复制因子。

这两个Kafka实例是分开独立的,没有集群。

然后Clickhouse将引导到第一个可用的"集群";从代理地址列表中。

同样地,你的生产者进程只单独地向那些服务器发送数据。

如果你想要连接来自不同Kafka集群(甚至是一个实例的集群)的数据,你需要两个不同的表定义,然后在查询中连接/联合数据

最新更新