我正在通过kafka connect,并且正在尝试了解这些概念。
让我们说我已经设置了kafka集群(节点k1,k2和k3),它正在运行,现在我想在分布式模式下的不同节点(例如c1和c2)上运行kafka connect worker。
几个问题。
1)要以分布式模式运行或启动kafka connect,我需要使用命令../bin/connect-distributed.sh
,该命令在kakfa群集节点中可用,因此我需要从任一kafka群集节点中启动kafka connect吗?或我从其中启动kafka connect的任何节点都需要具有kafka二进制文件,以便我能够使用../bin/connect-distributed.sh
2)我需要将连接器插件复制到执行步骤1的任何kafka群集节点(或所有群集节点?)上吗?
3)在工作节点上启动jvm进程之前,kafka如何将这些连接器插件复制到工作节点?因为该插件是具有我的任务代码的插件,因此需要将其复制到worker才能在worker中启动该过程。
4)我是否需要在连接群集节点c1和c2中安装任何东西,例如需要安装Java或任何与kafka connect相关的东西?
5)在某些地方,它说使用融合平台,但我想首先使用apache kafka connect来启动它。
有人可以通过一些灯光甚至是一些资源的指针来帮助您。
谢谢。
答案 0 :(得分:7)
1)为了拥有高可用性的kafka-connect服务,您需要在具有相同connect-distributed.sh
的两台不同的计算机上至少运行group.id
的两个实例。您可以找到有关每个工作程序here的配置的更多详细信息。为了提高性能,Connect应该独立于代理和Zookeeper计算机运行。
2)是,您需要将所有连接器放在计划运行kafka-connect的每台计算机上的plugin.path
下(通常在/usr/share/java/
下)。
3)kafka-connect将在启动时加载连接器。您不需要处理。请注意,如果您的kafka-connect实例正在运行,并且添加了新的连接器,则需要重新启动服务。
4)您需要在所有计算机上安装Java。尤其对于Confluent平台:
此版本的Confluent Platform支持Java 1.7和1.8 (当前不支持Java 1.9)。您应该使用 垃圾优先(G1)垃圾收集器。 For more information, see the Supported Versions and Interoperability。
5)这取决于。 Confluent由Apache Kafka的原始创建者创建,它是一个更完整的发行版,其中添加了架构管理,连接器和客户端。它也随KSQL一起提供,如果您需要对某些事件采取行动,这将非常有用。 Confluent只是在Apache Kafka发行版的顶部添加了一个非修改版本。
答案 1 :(得分:1)
Giorgos给出的答案是正确的。我运行了几个连接器,但现在我对它的理解更好了。
我只是想换个说法。
在Kafka connect中涉及两件事,一是Worker,第二是连接器。下面是有关运行分布式Kafka connect的详细信息。
Kafka connect Worker是一个Java进程,将在其上运行连接器/连接任务。因此,第一件事是我们需要启动工作程序,要运行/启动工作程序,我们需要在该计算机上安装java,然后我们需要Kafka connect相关的sh / bat文件来启动工作程序和kafka lib,这些文件将由kafka connect worker使用,为此我们只需要在工作机中简单地复制/安装Kafka,还需要按照以下工作机属性文件中的定义在“ plugin.path”中复制所有与连接器和连接任务相关的jar /依赖项,现在工作机已经准备就绪,要启动工作程序,我们需要调用./bin/connect-distributed.sh ./config/connect-distributed.properties,此处connect-distributed.properties将具有工作程序的配置。我们需要在每台运行Kafka connect的机器上重复同样的事情。
现在worker Java进程正在所有机器上运行,woker配置将具有group.id属性,具有相同属性值的worker将形成worker组/集群。
每个工作进程将公开其余端点(默认为http://localhost:8083/connectors),以在正在运行的工作程序上启动/启动连接器,我们需要根据工作程序将启动的给定配置,对发布的连接器json进行http-post以上组/集群工作人员中的连接器和任务数。
示例:连接信息,
curl -X POST -H "Content-Type: application/json" --data '{"name": "local-file-sink", "config": {"connector.class":"FileStreamSinkConnector", "tasks.max":"3", "file":"test.sink.txt", "topics":"connect-test" }}' http://localhost:8083/connectors