Kafka connect 集群设置或启动 connect workers

Kafka connect cluster setup or launching connect workers

我正在通过 kafka connect,我正在尝试了解这些概念。

假设我有 kafka 集群(节点 k1、k2 和 k3)设置,它是 运行ning,现在我想 运行 kafka 连接不同节点的工作人员,比如 c1 和 c2在分布式模式下。

几个问题。

1) 要 运行 或在分布式模式下启动 kafka connect 我需要使用命令 ../bin/connect-distributed.sh,它在 kakfa 集群节点中可用,所以我需要从任何一个节点启动 kafka connect卡夫卡集群节点?或者我启动 kafka connect 的任何节点都需要有 kafka 二进制文件,这样我才能使用 ../bin/connect-distributed.sh

2) 我需要将我的连接器插件复制到我执行第 1 步的任何 kafka 集群节点(或所有集群节点?)?

3) kafka如何在工作节点上启动jvm进程之前将这些连接器插件复制到工作节点?因为这个插件有我的任务代码,需要将它复制到 worker 才能在 worker 中启动进程。

4) 我是否需要在连接集群节点 c1 和 c2 中安装任何东西,比如需要安装 java 或任何与 kafka 连接相关的东西?

5) 在某些地方它说使用 confluent 平台,但我想首先使用 apache kafka connect 单独启动它。

有人可以通过一些光或什至指向一些资源的指针也会有所帮助。

谢谢。

1) 为了获得高可用性的 kafka-connect 服务,您需要 运行 在具有相同 group.id 的两台不同机器上至少有两个 connect-distributed.sh 实例。您可以找到有关每个工作人员配置的更多详细信息 here。为了提高性能,Connect 应该 运行 独立于代理和 Zookeeper 机器。

2) 是的,您需要将所有连接器放在您计划 运行 kafka-connect 的每台机器上的 plugin.path 下(通常在 /usr/share/java/ 下)。

3) kafka-connect 将在启动时加载连接器。你不需要处理这个。注意,如果你的 kafka-connect 实例是 运行ning 并且添加了新的连接器,你需要重启服务。

4) 您需要在所有机器上安装 Java。特别是对于 Confluent 平台:

Java 1.7 and 1.8 are supported in this version of Confluent Platform (Java 1.9 is currently not supported). You should run with the Garbage-First (G1) garbage collector. For more information, see the Supported Versions and Interoperability.

5) 这取决于。 Confluent 由 Apache Kafka 的原始创建者创建,它是一个更完整的发行版,添加了模式管理、连接器和客户端。它还带有 KSQL,如果您需要对某些事件采取行动,这将非常有用。 Confluent 只是在 Apache Kafka 发行版之上添加,它不是修改版本。

Giorgos 给出的答案是正确的。我 运行 几个连接器,现在我更了解它了。

我只是想换一种说法。

在 Kafka connect 中涉及两件事,一是 Worker,二是 connector.Below 关于 运行ning 分布式 Kafka connect 的详细信息。

Kafka connect Worker 是一个 Java 进程,connector/connect 任务将在该进程上 运行。所以第一件事是我们需要启动 worker,run/launch 一个我们需要 java 安装在该机器上的 worker 然后我们需要 Kafka connect 相关的 sh/bat 文件来启动 worker 和 kafka 库由 kafka connect worker 使用,为此我们将简单地 copy/install Kafka 在 worker 机器中,我们还需要复制所有连接器和连接任务相关的 jars/dependencies 到 "plugin.path" 中定义下面的 worker 属性文件,现在 worker 机器准备好了,要启动 worker 我们需要调用 ./bin/connect-distributed.sh ./config/connect-distributed.properties,这里 connect-distributed.properties 将有 worker 的配置。在我们需要 运行 Kafka 连接的每台机器上都必须重复同样的事情。

现在 worker java 进程在所有机器上 运行ning,woker 配置将有 group.id 属性,具有相同 [=46] 的 worker =] 值将形成一个 group/cluster 的工人。

每个工作进程都会将休息端点(默认http://localhost:8083/connectors)暴露给 launch/start 宁工作人员上的连接器,我们需要做 http-post a连接器配置 json,根据给定的配置,工作人员将启动连接器和上述 group/cluster 个工作人员中的任务数。

示例:连接 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