docker - kafka_connect 没有找到它的连接器
问题描述
我在 EC2 机器上的 docker 容器中运行了一个融合的 kafka 集群,如下所示
- Zookeepers 和 kafka-brokers 在不同 EC2 实例上的 3 个 docker 容器
用于confluent_control_center的单独 EC2 实例上的 1 个 docker 容器- 上述控制中心为 kafka_connect 运行的同一 EC2 实例上的 1 个 docker 容器
下面是control_center和kafka_connect的配置
控制中心
bootstrap.servers=<ec2_1:9092,ec2_2:9092,ec_3:9092>
zookeeper.connect=<ec2_1:2181,ec2_2:2181,ec_3:2181>
confluent.controlcenter.data.dir=/var/lib/confluent-control-center
confluent.monitoring.interceptor.topic.replication=1
confluent.controlcenter.internal.topics.replication=1
confluent.controlcenter.command.topic.replication=1
confluent.metrics.topic.replication=1
confluent.controlcenter.internal.topics.partitions=1
confluent.monitoring.interceptor.topic.partitions=1
confluent.controlcenter.config.dir=/etc/confluent-control-center
confluent.controlcenter.streams.num.stream.threads=2
confluent.controlcenter.replication.factor=1
confluent.controlcenter.connect.cluster=http://<kafka_connect_ec2>:8083
卡夫卡连接
config.storage.topic=connect_config
log4j.root.loglevel=INFO
group.id=kafka-connect
bootstrap.servers=<ec2_1:9092,ec2_2:9092,ec_3:9092>
plugin.path=/usr/share/confluent-hub-components
key.converter=org.apache.kafka.connect.json.JsonConverter
offset.storage.topic=connect-offsets
internal.key.converter.schemas.enable=false
consumer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor
value.converter=org.apache.kafka.connect.json.JsonConverter
status.storage.topic=connect-status
producer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor
internal.value.converter.schemas.enable=false
rest.advertised.host.name=CONNECT
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter=org.apache.kafka.connect.json.JsonConverter
在下面的截图中,我显示我在插件目录中安装了 gcs 连接器
root@76763ee93675:/usr/share/confluent-hub-components# ls
confluentinc-kafka-connect-gcs
但是,当我启动容器时,我无法通过使用它到达 kafka-connect rest api 来查看gcs
http://kafka_connect_ec2:8083/connectors
以上返回一个空列表[]
我也看不到control_center中的gcs连接器
一些帖子建议将实际的 gcs jar 文件移动到插件目录中,我尝试过但没有运气。
另一件我无法理解的事情,在图片中您可以看到control_center可以“看到”的 2 个连接器
- SchemaSourceConnector
- 文件流源连接器
我不确定control_center在哪里找到这些。
有人可以建议这里配置错误吗?
提前致谢。
解决方案
万一其他人偶然发现这样的问题......发生的事情是运行 kafka-connect 的 docker 容器没有足够的资源来加载所有连接器,所以它要么会加载一些连接器,要么省略其余部分,否则会耗尽资源并使主机无法访问。我希望 Kafka 连接日志能够反映连接器加载失败的事实。无论如何,由于我在 EC2 实例上运行我的设置,我所要做的就是升级我的实例大小,这解决了这个问题。谢谢!
推荐阅读
- amazon-web-services - 如何在 EC2 实例上运行命令?SSM 中缺少 AWS-RunShellScript
- r - 根据文件扩展名选择文件的最佳方法(用 r 编写)
- bash - 禁止 stderr 控制台输出,但在 Shell 中保留退出代码
- python - 压缩 Python 生成器,第二个更短:如何检索被静默消耗的元素
- reactjs - 在将数据存储到firebase并在react redux中更新状态时出现以下错误
- laravel - 现有列的 renameColumn 迁移失败,列不存在错误
- java - 图传递性 Java
- android - Facebook 应用程序中的深层链接有什么问题?
- java - 在较大的文件上获取 java.lang.OutOfMemoryError
- tensorflow - 在 Ubuntu 和 OSX 上构建 tensorflow 需要 9 个多小时并且尚未完成