Kafka 连接集群设置或启动连接工作人员

Posted

技术标签:

【中文标题】Kafka 连接集群设置或启动连接工作人员【英文标题】:Kafka connect cluster setup or launching connect workers 【发布时间】:2018-12-22 10:54:35 【问题描述】:

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

假设我已经设置了 kafka 集群(节点 k1、k2 和 k3)并且它正在运行,现在我想在不同的节点上运行 kafka 连接工作程序,例如以分布式模式运行 c1 和 c2。

几个问题。

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

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

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

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

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

我只是想换一种说法。

Kafka connect涉及到两件事,一是Worker,二是connector。下面是关于运行分布式Kafka connect的细节。

Kafka connect Worker 是一个 Java 进程,连接器/连接任务将在该进程上运行。所以首先我们需要启动worker,要运行/启动一个worker,我们需要在该机器上安装java,然后我们需要Kafka connect相关的sh/bat文件来启动kafka connect worker将使用的worker和kafka libs,为此我们将只是简单地在工作机器中复制/安装 Kafka,我们还需要在“plugin.path”中复制所有连接器和连接任务相关的 jars/依赖项,如下面的工作属性文件中定义的那样,现在工作机器准备好了,要启动worker,我们需要调用./bin/connect-distributed.sh ./config/connect-distributed.properties,这里connect-distributed.properties 将具有worker 的配置。在我们需要运行 Kafka 连接的每台机器上都必须重复相同的操作。

现在 worker java 进程正在所有机器上运行,woker 配置将具有 group.id 属性,具有相同属性值的工人将形成一个工人组/集群。

每个工作进程都会暴露剩余端点(默认http://localhost:8083/connectors),要在正在运行的工作人员上启动/启动连接器,我们需要 http-post 一个连接器配置 json,根据给定的配置工作人员将启动连接器以及上述组/集群工作人员中的任务数。

示例:连接帖子,

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

【讨论】:

"我们还需要在“plugin.path”中复制所有连接器和连接任务相关的 jars/依赖项" 我们在哪里可以找到所有必需 JAR 的列表?例如,我想设置一个雪花连接器,但是缺少很多依赖项,我无法在任何地方找到依赖项列表...【参考方案2】:

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

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

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

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

此版本的 Confluent 平台支持 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 发行版之上添加,它不是修改版。

【讨论】:

以上是关于Kafka 连接集群设置或启动连接工作人员的主要内容,如果未能解决你的问题,请参考以下文章

第二个和第三个分布式 Kafka 连接器工作人员无法正常工作

如何配置我的连接器以在分布式 kafka 连接的多集群连接环境中的特定工作组中运行?

广告 kafka 在 K8s 上连接休息侦听器

在远程 MSK kafka 集群上使用 kafka 连接 mongoDB debezium 源连接器

在Kafka Connect中,如何连接多个kafka集群?

k8s 使用普通用户部署kafka2.4.0集群思路整理