自从升级到kafka 2.3(也包括kafka connect 2.3)后,我们在设置中遇到了许多不平衡的连接器,其中应包括kafka connect中新的增量协作再平衡,如下所述:https://cwiki.apache.org/confluence/display/kafka/kip-415%3a+incremental+cooperative+rebalancing+in+kafka+connect
让我解释一下我们的设置,我们正在部署多个kafka connect集群来转储hdfs上的kafka主题。为每个hdfs连接器生成一个connect集群,这意味着在任何时候,connect集群上都只有一个连接器在运行。这些集群部署在kubernetes之上,在私有轮询中随机选择ip。
举个例子。对于这个hdfs连接器,我们生成了一个包含20个worker的connect集群。40个任务应该在这个集群上运行,所以我们可以预期每个worker有2个任务。但如下面的命令所示,当查询connectapi一段时间后,连接器似乎真的不平衡,一些工人甚至根本不工作,而其中一个工人拥有28个任务。
bash-4.2$ curl localhost:8083/connectors/connector-name/status|jq '.tasks[] | .worker_id' | sort |uniq -c
...
1 "192.168.32.53:8083"
1 "192.168.33.209:8083"
1 "192.168.34.228:8083"
1 "192.168.34.46:8083"
1 "192.168.36.118:8083"
1 "192.168.42.89:8083"
1 "192.168.44.190:8083"
28 "192.168.44.223:8083"
1 "192.168.51.19:8083"
1 "192.168.57.151:8083"
1 "192.168.58.29:8083"
1 "192.168.58.74:8083"
1 "192.168.63.102:8083"
在这里,我们期望整个工人投票被使用,连接器在一段时间后平衡。我们希望有这样的东西:
bash-4.2$ curl localhost:8083/connectors/connector-name/status|jq '.tasks[] | .worker_id' | sort |uniq -c
...
2 "192.168.32.185:8083"
2 "192.168.32.53:8083"
2 "192.168.32.83:8083"
2 "192.168.33.209:8083"
2 "192.168.34.228:8083"
2 "192.168.34.46:8083"
2 "192.168.36.118:8083"
2 "192.168.38.0:8083"
2 "192.168.42.252:8083"
2 "192.168.42.89:8083"
2 "192.168.43.23:8083"
2 "192.168.44.190:8083"
2 "192.168.49.219:8083"
2 "192.168.51.19:8083"
2 "192.168.55.15:8083"
2 "192.168.57.151:8083"
2 "192.168.58.29:8083"
2 "192.168.58.74:8083"
2 "192.168.59.249:8083"
2 "192.168.63.102:8083"
第二个结果实际上是通过手动杀死一些工作人员来实现的,幸运的是(我们现在还没有找到一个合适的方法来强制连接集群之间的均衡,这更像是一个尝试失败的过程,直到连接器均衡为止)。
有没有人遇到过这个问题并设法妥善解决?
暂无答案!
目前还没有任何答案,快来回答吧!