Apache kafka 合流Kafka connect分布式模式jdbc连接器

Apache kafka 合流Kafka connect分布式模式jdbc连接器,apache-kafka,apache-kafka-connect,confluent-platform,Apache Kafka,Apache Kafka Connect,Confluent Platform,我们已经使用jdbc独立连接器成功地使用了MySQL-kafka数据摄取,但现在在分布式模式下使用相同的连接器(作为kafka连接服务)时遇到了问题 用于工作正常的独立连接器的命令- /usr/bin/connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/source-quickstart-mysql.properties 现在我们已经停止了这一步,并在分布式模式下启动了kafka

我们已经使用jdbc独立连接器成功地使用了MySQL-kafka数据摄取,但现在在分布式模式下使用相同的连接器(作为kafka连接服务)时遇到了问题

用于工作正常的独立连接器的命令-

/usr/bin/connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/source-quickstart-mysql.properties
现在我们已经停止了这一步,并在分布式模式下启动了kafka connect服务,如下所示-

systemctl status confluent-kafka-connect
● confluent-kafka-connect.service - Apache Kafka Connect - distributed
   Loaded: loaded (/usr/lib/systemd/system/confluent-kafka-connect.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-11-14 22:52:49 CET; 41min ago
     Docs: http://docs.confluent.io/
 Main PID: 130178 (java)
   CGroup: /system.slice/confluent-kafka-connect.service
           └─130178 java -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.a...
2个节点当前正在使用相同的
connect-distributed.properties
文件运行连接服务

bootstrap.servers=node1IP:9092,node2IP:9092
group.id=connect-cluster
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.topic=connect-offsets
offset.storage.replication.factor=1
config.storage.topic=connect-configs
config.storage.replication.factor=1
status.storage.topic=connect-status
status.storage.replication.factor=1
offset.flush.interval.ms=10000
plugin.path=/usr/share/java
connect服务已启动并正在运行,但它不会加载在
/etc/kafka/connect standalone.properties
下定义的连接器

应该对服务执行哪些操作,以便每当您点击命令
systemctl start confluent kafka connect
,它就会运行服务并启动
/etc/kafka connect-*/
下定义的连接器,就像手动运行提供属性文件路径的独立连接器一样

它运行服务并启动
/etc/kafka connect-*/

这不是分布式模式的工作方式。。。它不知道要加载哪些属性文件,也不扫描这些文件夹1

在独立模式下,您提供的
N+1
属性文件会立即加载,是的,但对于“连接分布式”,您必须使用


Confluent Control Center或Landoop的Connect UI可以为这些操作提供良好的管理web门户

顺便说一下,如果您有多个代理,我建议在
connect distributed.properties
文件中增加这些connect主题的副本系数


一,。如果有,这可能是一个很好的特性,但是您必须确保在分布式模式下永远不会删除/停止连接器,并且最终会与正在运行的内容和文件系统上的文件处于不一致的状态

我可以描述我在分布式模式下启动jdbc连接器时做了什么:

我在本地计算机上使用了
confluent
CLI实用程序,以更快地启动服务

./confluent start
后记我停止了卡夫卡连接

./confluent stop connect
然后我继续在两个不同的端口(
18083
28083
)上手动启动定制的
connect distributed

注意:将
plugin.path
设置为完整(而非相对)路径(例如:plugin.path=/full/path/to/confluent-5.0.0/share/java)

然后我可以轻松地添加一个新的连接器

curl -s -X POST -H "Content-Type: application/json" --data @/full/path/to/confluent-5.0.0/etc/kafka-connect-jdbc/source-quickstart-sqlite.json http://localhost:18083/connectors
这应该能奏效


正如卡夫卡经纪人所说的,如果你正在处理一些你不想在一个经纪人中断的情况下丢失的东西,那么已经指出了至少3的复制因子。p> 分布式模式下的连接器不能像在独立模式下那样由属性文件部署。使用RESTAPI,请参考

我正在使用:curl-X POST-H“Accept:application/json”-H”内容类型:application/json“10.30.72.218:8083/connectors/-d'{“name”:“linuxemp connector”,“config”:{“connector.class”:“io.confluent.connect.jdbc.jdbsourceconnector”,“tasks.max”:“1”,“connection.url”:“jdbc:mysql://X.X.X.X:3306/linux_db?user=groot&password=pwd“,”table.whitelist“:”emp“,”mode“:”timestamp“,”incrementing.column.name“:”empid“,”topic.prefix“:”mysqlconnector-“}}”。我已经在插件路径中有了连接器驱动程序,并且它保留在所有连接节点上。但仍然收到此错误-{”error_code“:400,“message”:”连接器配置无效,并包含以下2个错误:\n无效值java.sql.SQLException:找不到“找不到合适的驱动程序”的合适驱动程序意味着没有从插件路径(更具体地说是连接jdbc目录)加载JAR.如果独立模式起作用,而您在同一台机器上运行分布式模式,那么我不确定为什么会出现这种情况happen@Tony我认为您应该确保已将mysql jdbc驱动程序库添加到
${confluent.install.dir}/共享/java/kafka连接jdbc/
directory@marius请随意回答
合流启动
将运行分布式模式…但为什么要使用两个进程?
curl -s -X POST -H "Content-Type: application/json" --data @/full/path/to/confluent-5.0.0/etc/kafka-connect-jdbc/source-quickstart-sqlite.json http://localhost:18083/connectors