【Kafka Connect】Kafka批量导出和导入

一、Kafka Connect

Kafka Connect是在0.9以后加入的功能,主要是用来将其他系统的数据导入到Kafka,然后再将Kafka中的数据导出到另外的系统。主要由2中运行模式

本文是基于kafka 0.10.2,也适用于之后的版本

1.1 Standalone 单机模式

单机模式就是只用一个进程去处理数据,但是一个进程可以配置多个works

命令的使用模式

bin/connect-standalone.sh config/connect-standalone.properties connector1.properties [connector2.properties …]

  • connect-standalone.properties:里面是一些公用配置,主要是用来配置work的,下面详细列举
  • connector1.properties:可以是输入源配置,也就是导入到kafka的topic。也可以是输出源配置,也就是从kafka的topic导出数据。
1.1.1 connect-standalone.properties
  • bootstrap.servers:无需解释
  • key.converter:可是是org.apache.kafka.connect.storage.StringConverter 或者 org.apache.kafka.connect.json.JsonConverter 不配置默认是文本
  • value.converter:一般是org.apache.kafka.connect.json.JsonConverter,不配置默认是文本
  • key.converter.schemas.enable:key转换器的schema,这个一般都是配置成false.
  • value.converter.schemas.enable :key转换器的schema,这个一般都是配置成false
  • internal.key.converter:这是为了存储offset或者一些配置数据的key的转换器(因为有些offset可能要存储在topic中).参考 key.converter
  • internal.value.converter:这是为了存储offset或者一些配置数据的value的转换器(因为有些offset可能要存储在topic中)参考 value.converter
  • internal.key.converter.schemas.enable:参考 key.converter.schemas.enable
  • internal.value.converter.schemas.enable:参考 value.converter.schemas.enable
  • offset.storage.file.filename:这个是针对输入源的,也就是导入数据用的,他记录导入的offset信息
  • offset.flush.interval.ms:offset保存间隔

一个配置Demo

bootstrap.servers=xxxx:9092
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=flase
value.converter.schemas.enable=flase
internal.key.converter=org.apache.kafka.connect.storage.StringConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false
offset.storage.file.filename=/tmp/connect.offsets
offset.flush.interval.ms=10000
1.1.2 输入源配置
  • name:connector的唯一名字
  • connector.class:用来连接Kafka集群的类名,也就是你继承SourceConnector的实现类,也就是Connector程序的入口,尽量使用全量路径名。如果从文件中读取书默认实现类是FileStreamSource
  • tasks.max:task的数量,一个task就是一个线程。task数量设置要小于等于分片partition的数量,多了并发度无法提高。
  • file:数据应的文件
  • topics:目的地topic。

一个配置Demo

name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=test.sink.txt
topic=xxxxx
1.1.3 输出源配置
  • name:connector的唯一名字
  • connector.class:用来连接Kafka集群的类名,也就是你继承SinkConnector的实现类,也就是Connector程序的入口,尽量使用全量路径名。如果从文件中读取书默认实现类是FileStreamSink
  • tasks.max:task的数量,一个task就是一个线程。task数量设置要小于等于分片partition的数量,多了并发度无法提高。
  • file:到处的数据的文件位置
  • topics:要消费的topic列表

一个配置Demo

name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=test.sink.txt
topic=xxxx

从kafka的topic取出数据,然后存到文件test.sink.txt中

无法从指定分区里面取数据
无法从给指定的offset取数据(其实也有解决办法,就是先执行导出,然后停止,找到对应的消费组,更新消费组的offset为你想要的即可)

1.2 Distribute 分布式模式

这个模式目前没使用,感觉单机模式已经够用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值