前言

Kafka Connect是一个用于将数据流输入和输出Kafka的框架。Confluent平台附带了几个内置connector,可以使用这些connector进行关系数据库或HDFS等常用系统到Kafka的数据传输,也是用来构建ETL的一种方案。本次测试以pgsql为主

Kafka Connect基本概念:

  • Kafka Connect实际上是Kafka流式计算的一部分
  • Kafka Connect主要用来与其他中间件建立流式通道
  • Kafka Connect支持流式和批处理集成

Kakfa Connect环境准备

Step1.

下载confluentinc-kafka-connect-jdbc-5.5.0.zip  

压缩包中 包含有  Confluent平台的JDBC的Connect 是实现数据复制 etl 的核心库

Step2.

如果目标库与源库是mysql 还需要下载 mysql 的驱动包 ,这里要注意版本,和后续配置文件中的链接串,以及用户的授权等细节

https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar

step3.

将解压下载好的Connect压缩包,创建一个存放目录,将解压后的文件移到到该目录下,并将MySQL驱动包移动到Connect解压后的lib目录下:

Step4

编辑connect-distributed.properties配置文件,修改如下配置项(一定要确保8083端口开放)

# Broker Server的访问ip和端口号
bootstrap.servers=主机ip:9092
# 指定集群id
group.id=connect-cluster
# 指定rest服务的端口号
rest.port=8083
# 指定Connect插件包的存放路径
plugin.path=/xxx/xxx/xxx
step5. 启动Kafka Connect

 启动命令如下

参数 –daemon 表示后台启动

启动成功后,使用postman访问http://{ip}:8083/connector-plugins

会返回如下界面

表示Kafka Connect的环境ok

Step6.

Source Connector与Sink Connector如何与pgsql做集成。

首先使用API 创建 source connector

地址

http://{ip}:8083/connectors

参数

{

"name":"test-upload-mysql",

"config":{

"connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",

"connection.url":"jdbc:postgresql://124.71.155.137:5432/db2021?user=postgres&password=postgres",

"table.whitelist":"comments",

"incrementing.column.name":"id",

"mode":"incrementing",

"topic.prefix":"test-mysql-"

}

}

参数格式一定是json 同时注意配置postman 请求参数格式 为application/json

参数说明:

  • name:指定新增的connector的名称
  • config:指定该connector的配置信息
  • connector.class:指定使用哪个Connector类
  • connection.url:指定pg的连接url
  • table.whitelist:指定需要加载哪些数据表
  • incrementing.column.name:指定表中自增列的名称
  • mode:指定connector的模式,这里为增量模式
  • topic.prefix:Kafka会创建一个Topic,该配置项就是用于指定Topic名称的前缀,后缀为数据表的名称。

返回值如下:

{

    "name":"test-upload-mysql",

    "config":{

        "connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",

        "connection.url":"jdbc:pgsql://{ip}:3306/kafka_store?user=root&password=123456a.",

        "table.whitelist":"users_input",

        "incrementing.column.name":"uid",

        "mode":"incrementing",

        "topic.prefix":"test-mysql-",

        "name":"test-upload-mysql"

    },

    "tasks":[



    ],

    "type":"source"

}

然后再次调用 connectors 接口,可看到名为test-upload-mysql connector

Step7

像数据库中添加数据注意源表名一定要和上述config 配置中table.whitelist值保持一致

Step8

可以启动consumer 查看kafka 对应topic ,topic 名称为config 配置中的前缀加表名

Step9

Kafka
Connect Sink和MySQL集成

同样调用
connectors 接口参数列表不同,具体如下

'{"name":"test-download-mysql","config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url":"jdbc:pgsql://{ip}:3306/kafka_store?user=root&password=123456a.",
"topics":"test-mysql-users_input",
"auto.create":"false",
"insert.mode": "upsert",
"pk.mode":"record_value",
"pk.fields":"uid",
"table.name.format": "users_output"}}'

参数说明:

  • name:指定新增的connector的名称
  • config:指定该connector的配置信息
  • connector.class:指定使用哪个Connector类
  • connection.url:指定MySQL的连接url
  • topics:指定从哪个Topic中读取数据
  • auto.create:是否自动创建数据表
  • insert.mode:指定写入模式,upsert表示可以更新及写入
  • pk.mode:指定主键模式,record_value表示从消息的value中获取数据
  • pk.fields:指定主键字段的名称
  • table.name.format:指定将数据输出到哪张数据表上

成功返回对应信息

到此 connector 搭建完成,刷新目标表,即可看到数据已经同步

要注意的点 有如下几方面

  1. 配置参数格式问题
  2. 服务器对应端口号问题
  3. Kafka服务一定要先启动
  4. 数据库连接参数问题

原文转自 https://blog.51cto.com/zero01/2498682

Kafka connector (kafka核心API)的更多相关文章

  1. 分布式消息队列kafka系列介绍 — 核心API介绍及实例

    原文地址:http://www.inter12.org/archives/834 一 PRODUCER的API 1.Producer的创建,依赖于ProducerConfig public Produ ...

  2. Flink Kafka Connector 与 Exactly Once 剖析

    Flink Kafka Connector 是 Flink 内置的 Kafka 连接器,它包含了从 Kafka Topic 读入数据的 Flink Kafka Consumer 以及向 Kafka T ...

  3. Debezium SQL Server Source Connector+Kafka+Spark+MySQL 实时数据处理

    写在前面 前段时间在实时获取SQLServer数据库变化时候,整个过程可谓是坎坷.然后就想在这里记录一下. 本文的技术栈: Debezium SQL Server Source Connector+K ...

  4. 《Flink SQL任务自动生成与提交》后续:修改flink源码实现kafka connector BatchMode

    目录 问题 思路 kafka参数问题 支持batchmode的问题 参数提交至kafkasource的问题 group by支持问题 实现 编译 测试 因为在一篇博文上看到介绍"汽车之家介绍 ...

  5. debezium、kafka connector 解析 mysql binlog 到 kafak

    目的: 需要搭建一个可以自动监听MySQL数据库的变化,将变化的数据捕获处理,此处只讲解如何自动捕获mysql 中数据的变化 使用的技术 debezium :https://debezium.io/d ...

  6. kafka生产者和消费者api的简单使用

    kafka生产者和消费者api的简单使用 一.背景 二.需要实现的功能 1.生产者实现功能 1.KafkaProducer线程安全的,可以在多线程中使用. 2.消息发送的key和value的序列化 3 ...

  7. Kafka相关概念及核心配置说明

    1. Kafka简介 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...

  8. 【Kafka】Kafka简单介绍

    目录 基本介绍 概述 优点 主要应用场景 Kafka的架构 四大核心API 架构内部细节 基本介绍 概述 Kafka官网网站:http://kafka.apache.org/ Kafka是由Apach ...

  9. Spark Streaming + Kafka整合(Kafka broker版本0.8.2.1+)

    这篇博客是基于Spark Streaming整合Kafka-0.8.2.1官方文档. 本文主要讲解了Spark Streaming如何从Kafka接收数据.Spark Streaming从Kafka接 ...

  10. kafka实战教程(python操作kafka),kafka配置文件详解

    kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...

随机推荐

  1. 几种Windows进程通信

    32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护.那么相应的进程之间的通信也就有必要整理掌握一下. Windows进程间通讯的方法有很多:管道. ...

  2. Sql中的小技巧

    1.where 字段名 regexp '正则表达式' 正则符号: ^ $ . [ ] * | . 表示1个任意字符 * 表示前面重复0次,或者任意次 ^ 开始 $ 结尾 [] 范围 | 或 sql示例 ...

  3. java IO操作和计算操作:工作内存和主内存 volatile关键字作用;原子操作对象AtomicInteger ....

    应该停止但无法停止的计算线程 如下线程示例,线程实例中while循环中的条件,在主线程中通过调用实例方法更新后,while循环并没有更新判断变量是否还成立.而是陷入了while(true)死循环. i ...

  4. MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件

    MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件, 这个问题很奇怪,这样的话不能看到通过代码发送的邮件历史记录,所以只好借助秘密抄送了,抄 ...

  5. c++之一个方便的日志库

    概述 本文演示环境: win10 + vs2017 日志,我用的很少,通常是用作动态库调试使用. 日志记录下来,基本就没看过,除非模块出现了问题. 使用cmake管理的项目 使用C++封装了C语言读写 ...

  6. 【LeetCode】1079. Letter Tile Possibilities 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯 日期 题目地址:https://leetcode ...

  7. 【九度OJ】题目1467:二叉排序树 解题报告

    [九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...

  8. 【九度OJ】题目1028:继续畅通工程 解题报告

    [九度OJ]题目1028:继续畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1028 题目描述: 省政府" ...

  9. 【LeetCode】413. Arithmetic Slices 等差数列划分

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 双指针 递归 动态规划 日期 题目地址:htt ...

  10. LeetCode118. Pascal's Triangle 杨辉三角

    题目 给定行数,生成对应的杨辉三角 思考 同一行是对称的,最大的下标为(行数+1)/2;1,1,2,3,6;下标从0开始,则对应分别为0.0.1.1.2.2 对于第偶数行,个数也是偶数,对于奇数行,个 ...