【发布时间】:2021-09-22 02:09:30
【问题描述】:
我最近尝试通过confluent-hub 安装Debezium PostgreSQL Connector v1.6.0。
加载插件时,连接器无法加载,由loadProperties 在IoUtil 引发,每个错误:
[2021-07-13 00:45:06,715] INFO Loading plugin from: /usr/share/confluent-hub-components/debezium-debezium-connector-postgresql (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader)
[2021-07-13 00:45:07,375] ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectDistributed)
java.lang.ExceptionInInitializerError
at io.debezium.connector.postgresql.PostgresConnector.version(PostgresConnector.java:47)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:387)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:392)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc(DelegatingClassLoader.java:362)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:334)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:268)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:260)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initPluginLoader(DelegatingClassLoader.java:229)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:206)
at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:61)
at org.apache.kafka.connect.cli.ConnectDistributed.startConnect(ConnectDistributed.java:93)
at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:80)
Caused by: java.lang.NullPointerException: inStream parameter is null
at java.base/java.util.Objects.requireNonNull(Objects.java:246)
at java.base/java.util.Properties.load(Properties.java:406)
at io.debezium.util.IoUtil.loadProperties(IoUtil.java:491)
at io.debezium.util.IoUtil.loadProperties(IoUtil.java:521)
at io.debezium.connector.postgresql.Module.<clinit>(Module.java:19)
... 12 more
我们基本上有一个 Dockerfile,我们在其中运行以下内容:
FROM confluentinc/cp-kafka-connect:6.2.0
RUN confluent-hub install --no-prompt debezium/debezium-connector-postgresql:1.6.0
一切似乎都很好,动物园管理员和本地代理都运行良好。我注意到版本 6.1.1 和 6.2.0 中有类似的行为。
任何人都可以提供任何意见吗?
重现此问题的步骤:
- 创建一个网络,并使用为环境变量提供的“zookeeper.env”文件运行 confluentinc/cp-zookeeper:6.2.0 映像:
$ docker network create --driver bridge my_network
$ docker run --platform="linux/amd64" -p "2181:2181" --name="zookeeper" --env-file=zookeeper.env --network=my_network confluentinc/cp-zookeeper:6.2.0
- 使用为环境变量提供的“broker.env”文件运行 confluentinc/cp-kafka:6.2.0 映像:
$ docker run -p "29092:29092" -p "9092:9092" -p "9101:9101" --platform="linux/amd64" --name="broker" --env-file=broker.env --network=my_network confluentinc/cp-kafka:6.2.0
- 使用基础 confluentinc/cp-kafka-connect:6.2.0 从附加的“Dockerfile”构建 Docker 映像。此映像将从 Confluent Hub 安装 debezium-connector-postgresql:1.6.0。使用为环境变量提供的“connect.env”文件运行它:
$ docker build . --platform='linux/amd64' -t 'connect'
$ docker run -p "8083:8083" --platform="linux/amd64" --name="connect" --env-file=connect.env --network=my_network connect
相关的.env 文件和Dockerfile 托管在on this Gist。
平台详情:
- macOS Big Sur 11.2.3 / M1
- Docker 3.5.2 (66501)
- Docker 引擎 20.10.7
编辑:经过进一步调查,这种行为似乎存在多个问题,无论是手动安装还是confluent-hub。这些问题似乎存在于其他插件中,例如 MySQL 连接器,甚至是 Confluent 自己的 JDBC 连接器。有总结here。
【问题讨论】:
-
FWIW
cp-kafka-connect已弃用,您应该使用cp-kafka-connect-base。这不会解决你的问题 :) -
出于兴趣,非amd64能用吗?
-
感谢您的建议;是的,
cp-kafka-connect-base不起作用。这在我同事的 amd64/Intel 机器上运行良好,但 qemu 仿真似乎在我的 M1 上运行良好(除了偶尔出现的分段错误)。从我看到的日志来看,Zookeeper 和 Broker 图像似乎也运行良好。加载插件是唯一的例外...... -
它是否适用于其他 Kafka Connect 插件?
-
更新:在
confluent-hub外部手动安装工作正常:gist.github.com/alexcu/… 这似乎可以正常加载插件。
标签: docker apache-kafka apache-kafka-connect confluent-platform debezium