我最近尝试通过confluent-hub
安装Debezium PostgreSQL连接器v1.6.0。
加载插件时,连接器无法加载,由IoUtil
中的loadProperties
引发,根据此错误:
[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";环境变量的文件:
$ 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";环境变量的文件:
$ 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
- 从";Dockerfile";已连接,使用基础confluentinc/cp-kafka-connect:6.2.0。此映像将从Confluent Hub安装debezium连接器postgresql:1.6.0
$ 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托管在此Gist上。
平台详细信息:
- macOS Big Sur 11.2.3/M1
- Docker 3.5.2(66501(
- Docker引擎20.10.7
编辑:经过进一步调查,这种行为似乎存在手动安装或confluent-hub
的多个问题。这些问题似乎存在于其他插件中,例如MySQL连接器,甚至Confluent自己的JDBC连接器。这里有一个总结。
我认为这可能是M1体系结构的一个问题。我的M1 Mac也遇到了同样的问题,于是我换了英特尔Mac,效果很好。