confluent kafka-connect-jdbc

2 篇文章 0 订阅
2 篇文章 0 订阅

1.1 Kafka connect的简单介绍

1.1.1 Kafka connect是什么?

Kafaka connect 是一种用于在Kafka和其他系统之间可扩展的、可靠的流式传输数据的工具。它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单。Kafka Connect可以从数据库或应用程序服务器收集数据到Kafka topic,使数据可用于低延迟的流处理。导出作业可以将数据从Kafka topic传输到二次存储和查询系统,或者传递到批处理系统以进行离线分析。

1.1.2 Kafka connect的特性

Kafka connector 是一个通用框架,提供统一的集成API;

支持分布式模式和单机模式;

REST 接口,用来查看和管理Kafka connectors;

自动化的offset管理,开发人员不必担心错误处理的影响;

分布式、可扩展;

流/批处理集成;

Kafka Connnect有两个核心概念:Source和Sink。 Source负责导入数据到Kafka,Sink负责从Kafka导出数据,它们都被称为Connector。

1.1.3 Kafaka connect的核心组件

Source:负责将外部数据写入到kafka的topic中;

Sink:负责从kafka中读取数据到自己需要的地方去,比如读取到HDFS,hbase等;可以接收数据,也可以接收模式信息

Connectors :通过管理任务来协调数据流的高级抽象;

Tasks:数据写入kafka和从kafka中读出数据的具体实现,source和sink使用时都需要Task;

Workers:运行connectors和tasks的进程;

Converters:kafka connect转换器提供了一种机制,用于将数据从kafka connect使用的内部数据类型转换为表示为Avro、Protobuf或JSON模式的数据类型。

Transforms:一种轻量级数据调整的工具;

1.1.4 Kafaka connect的工作模式

standalone:该模式下所有的worker都在一个独立的进程中完成;

distributed:该模式具有高扩展性,以及提供自动容错机制。在有效的worker进程中它们会自动的去协调执行connector和task,如果你新加了一个worker或者挂了一个worker,其他的worker会检测到然后在重新分配connector和task。connector负责获得所要连接的系统的信息,并不进行数据拷贝,task进行数据拷贝。

1.1.5 Converters 转换器的类型

不通类型的配置参考连接:

https://docs.confluent.io/current/connect/userguide.html#connect-configuring-converters

Converters 转换器使用不带模式注册表的json模式的配置:

key.converter=org.apache.kafka.connect.json.JsonConverter

value.converter=org.apache.kafka.connect.json.JsonConverter

key.converter.schemas.enable=false

value.converter.schemas.enable=false

key.converter.schemas.enable,value.converter.schemas.enable都为true时,键或值不会被视为普通JSON,而是被视为包含内部架构和数据的复合JSON对象。

当对源连接器启用这些功能时,模式和数据都在复合JSON对象中。

key.converter.schemas.enable,value.converter.schemas.enable都为false时,这也是默认值,只传递数据。

1.1.6 Converters 转换器如何使用Schema Registry模式注册表?

Kafka Connect and Schema Registry集成以从连接器捕获模式信息。Kafka Connect Converters提供了一种机制,用于将数据从kafka connect使用的内部数据类型转换为表示为Avro、Protobuf或JSON模式的数据类型。AvroConverter、ProtobufConverter、JsonSchemaConverter自动注册由source connectors生成的模式。Sink Connectors 可以接收数据,也可以接收模式信息,这就允许Sink Connectors 可以知道数据的结构,以提供额外的功能,比如维护数据库表结构或创建搜索索引。

Kafka Connect with Schema Registry的使用,必须在连接器配置或者worker的配置文件中指定参数:key.converter和value.converter;还必须提供Schema Registry URL的配置信息。

Avro、Protobuf、JSON Schema的配置参考连接:

https://docs.confluent.io/current/schema-registry/connect.html#schemaregistry-kafka-connect

1.1.7 在哪里指定转换器的配置以及如何继承属性?

可以在连接器中配置也可以在worker中配置,但是需要注意如下情况:

1、如果只在worker中配置了转换器的参数信息,则所有connect都将继承在worker中定义的转换器配置。

2、如果在connect和worker中都配置了转换器的参数信息,则connect中的配置会覆盖worker中的配置。

3、不管在connect还是worker中配置,必须始终包括converter and the Schema Registry URL的参数配置,否则将失败;

JSON Schema的配置示例:

key.converter=io.confluent.connect.json.JsonSchemaConverter

key.converter.schema.registry.url=http://localhost:8081

value.converter=io.confluent.connect.json.JsonSchemaConverter

value.converter.schema.registry.url=http://localhost:8081

Avro 配置示例:

key.converter=io.confluent.connect.avro.AvroConverter

key.converter.schema.registry.url=http://localhost:8081

value.converter=io.confluent.connect.avro.AvroConverter

value.converter.schema.registry.url=http://localhost:8081

1.2 connector单机版部署

1.2.1下载confluent-5.5.0

confluent-5.5.0有社区版和企业版,企业版需要licences。我们使用的是社区版,下载之后解压文件到home目录下。

1.2.2下载所需要的的jar包

需要的jar包有kafka-connect-jdbc-5.5.0.jar、ojdbc6.jar。如果下载了confluent-5.5.0,在confluent的share目录中会有kafka-connect-jdbc-5.5.0.jar包。

1.2.3调整jar包位置

将第(2)步下载的jar包拷贝到/home/confluent-5.5.0/share/java/kafka下面。

1.2.4修改kafka配置文件的plugin.path

修改kafka安装包下的config中的connect-standalone.properties文件中的plugin.path

Vi /home/confluent-5.5.0/etc/kafka/connect-standalone.properties

修改plugin.path=/home/confluent-5.5.0/share/java/

目的是在启动connector时找到所需要的各种jar包。

1.2.5 修改connector的配置文件

在 /home/confluent-5.5.0/etc/kafka-connect-jdbc/目录下新建connect配置文件,并编辑如下内容:
/home/confluent-5.5.0/etc/kafka-connect-jdbc/OracleSourceConnector.properties

name=test-oracle-kafka-connector
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.password=123456
connection.url=jdbc:oracle:thin:@192.168.1.3:1521:testdb
connection.user=test
table.whitelist=test.oracle_test
connection.backoff.ms=30000
topic.prefix=topic2 ##topic前缀
#mode=bulk
mode=timestamp ##指定模式
#incrementing.column.name=id
timestamp.column.name=CR_DATE
#table.poll.interval.ms = 1000
poll.interval.ms=5000
validate.non.null=false
#timestamp.initial=1593532297000 指定从某个时间戳开始
db.timezone=Asia/Shanghai ##指定时区

1.2.6启动connector进程(会自动创建topic)

/home/confluent-5.5.0/bin/connect-standalone /home/confluent-5.5.0/etc/kafka/connect-standalone.properties /home/confluent-5.5.0/etc/kafka-connect-jdbc/OracleSourceConnector.properties

1.2.7查看创建topic命令

--查看topic,创建的topic名称为定义的topic前缀+表名
/home/confluent-5.5.0/bin/kafka-topics --list --bootstrap-server localhost:9092

1.2.8启动consumer

/home/confluent-5.5.0/bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic topic2oracle_test

1.2.9 Jdbc连接器从指定时间戳位置捕获数据

如果想指定从某个时间戳开始推送数据,有两种设置方法:
(1)worker进程的配置文件/home/confluent-5.5.0/etc/kafka/connect-standalone.properties中记录了偏移量和时间戳信息,可以修改该文件的时间戳。

(2)先清空启动worker时生成的offset文件内容,在connector配置文件中添加参数timestamp.initial=时间戳方式指定。

注意:如果不先清空启动worker时生成的offset文件内容,直接修改参数timestamp.initial,实验证明没有效果。

1.2.10 源端数据库系统和JDBC连接器时区

需要注意的是数据库系统时区和connector的jdbc的时区应该是一致的。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#慧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值