Kafka Connect集群设置或启动Connect Worker

时间:2018-07-14 05:40:13

标签: apache-kafka apache-kafka-connect confluent

我正在通过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来启动它。

有人可以通过一些灯光甚至是一些资源的指针来帮助您。

谢谢。

2 个答案:

答案 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