合流Kafka Connect分布式模式jdbc连接器

时间:2018-11-14 22:45:34

标签: apache-kafka apache-kafka-connect confluent

我们已成功使用mySQL-通过jdbc独立连接器获取kafka数据,但现在在分布式模式下(与kafka connect service一样)面临着问题。

用于独立连接器的命令运行正常-

/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

连接服务已启动并正在运行,但不会加载/etc/kafka/connect-standalone.properties下定义的连接器。

应如何处理服务,以便每当您按下命令systemctl start confluent-kafka-connect时,它就会运行服务并在/etc/kafka-connect-*/下启动已定义的连接器,就像您运行独立的连接器手动提供以下路径一样属性文件..

可能是一个愚蠢的问题,但请帮忙!

谢谢!!

3 个答案:

答案 0 :(得分:2)

  

它运行服务并在/etc/kafka-connect-*/下启动已定义的连接器

这不是分布式模式的工作原理……它不知道要加载哪些属性文件,并且不扫描那些文件夹 1

在独立模式下,可以立即加载您提供的N+1属性文件,但是对于分布式连接,必须使用HTTP POST calls to the Connect REST API


Confluent Control Center或Landoop的Connect UI可以为这些操作提供一个不错的管理Web门户。

顺便说一句,如果您有多个代理,我建议增加connect-distributed.properties文件中那些连接主题的复制因子。

1。 如果这样做的话,这可能是一个不错的功能,但是您必须确保连接器永远不会在分布式模式下被删除/停止,并且最终只会与正在运行的文件以及文件系统上的文件处于不一致的状态。

答案 1 :(得分:1)

我可以描述一下我在分布式模式下启动jdbc连接器所做的事情:

我在本地计算机上使用ghci > primeFactors 419 [419] ghci > primeFactors 5698 [2,7,11,37] -- did this one really fast... ghci > primeFactors 76586 [2,149,257] -- and this one really fast... ghci > primeFactors 876350 [2,5,17,1031] -- it hung up just a hair with this one... ghci > primeFactors 4287635 [5,11,19,373] -- hung up a little bit longer here... ghci > primeFactors 34598274 [2,3,5766379] -- hung up for quite a while here... ghci > primeFactors 208346758 [2,104173379] -- and for a very long time with this one! CLI实用程序来更快地启动服务。

confluent

后记我停止了kafka-connect

./confluent start

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

28083

注意:将➜ bin ./connect-distributed ../etc/kafka/connect-distributed-worker1.properties ➜ bin ./connect-distributed ../etc/kafka/connect-distributed-worker2.properties 设置设为完整(而非相对)路径(例如:plugin.path = / full / path / to / confluent-5.0.0 / share / java)

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

plugin.path

这应该可以解决问题。

正如cricket_007所指出的,考虑到kafka经纪人的复制因子至少为3,以防您要处理其中一个经纪人断电而不想丢失的东西。

答案 2 :(得分:0)

不能像独立模式一样通过属性文件部署处于分布式模式的连接器。请改用REST API,请参考https://docs.confluent.io/current/connect/managing/configuring.html#connect-managing-distributed-mode