Las*_*sus 10 apache-kafka docker apache-kafka-connect
使用3的Kafka集群和相同的Zookeeper集群,我提出了一个分布式连接器节点.此节点使用单个任务成功运行.然后我提出了第二个连接器,这似乎运行,因为任务中的一些代码肯定会运行.然而,它似乎没有活着(尽管没有抛出错误,由于缺乏预期的活动而没有保持活着,而第一个连接器继续正常运行).当我调用URL时http://localhost:8083/connectors/mqtt/tasks,在每个连接器节点上,它告诉我连接器有一个任务.我希望这是两个任务,每个节点/工作一个任务.(目前工作人员配置说,tasks.max = 1但我也尝试将其设置为3.
当我尝试启动第三个连接器时,我收到错误:
"POST /connectors HTTP/1.1" 500 90 5
(org.apache.kafka.connect.runtime.rest.RestServer:60)
ERROR IO error forwarding REST request:
(org.apache.kafka.connect.runtime.rest.RestServer:241)
java.net.ConnectException: Connection refused
Run Code Online (Sandbox Code Playgroud)
尝试再次从shell调用连接器POST方法返回错误:
{"error_code":500,"message":"IO Error trying to forward REST request:
Connection refused"}
Run Code Online (Sandbox Code Playgroud)
我还尝试升级到今天发布的Apache Kafka 0.10.1.1.我还在看问题.每个连接器都运行在由单个映像定义的隔离Docker容器上.它们应该完全相同.
问题可能是我正在尝试http://localhost:8083/connectors对每个工作程序运行POST请求,当我只需要在单个工作程序上运行一次,然后该连接器的任务将自动分发给其他工作程序.如果是这种情况,我该如何分配任务?我目前将max设置为3,但只有一个似乎在一个worker上运行.
我最终使用与Yuri建议的方法基本相同的方式运行.我给每个工作者一个唯一的组ID,然后给每个连接器任务指定相同的名称.这允许三个连接器及其单个任务共享一个偏移量,因此在接收器连接器的情况下,它们从Kafka消耗的消息不会重复.它们基本上作为独立连接器运行,因为工作人员具有不同的组ID,因此不会相互通信.
如果连接器工作程序具有相同的组ID,则无法添加多个具有相同名称的连接器.如果为连接器指定不同的名称,它们将具有不同的偏移量并消耗重复的消息.如果同一组中有三个工作人员,一个连接器和三个任务,理论上理论情况是任务共享一个偏移量,工作人员确保任务始终在运行并且分布均匀(每个任务都使用一个唯一的集合分区).实际上,连接器框架不会创建多个任务,即使tasks.max设置为3,主题任务消耗时也有25个分区.
如果有人知道我为什么会看到这种行为,请告诉我.
我在与您相同的情况下遇到了类似的问题。
我选择了另一种方式-我使用了独立工作程序,这对我来说就像是一种魅力,因为负载分配是在Kafka客户端级别上实现的,并且一旦某些工作程序掉线,集群就会自动重新平衡,并且客户端会连接到未占用的主题。
PS。也许对您也有用。融合连接器不容许与主题模式不匹配的无效负载。一旦连接器收到一些无效的消息,它就会死掉。找出答案的唯一方法是分析指标。
| 归档时间: |
|
| 查看次数: |
1441 次 |
| 最近记录: |