菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
84
0

通过一个示例了解kafka connect连接器

原创
05/13 14:22
阅读数 1191

什么是kafka连接器connect

在实际工作中使用 kafka ,有时候会有类似这样的场景。我们需要把某些数据源的数据导入到 kafka,或者把 kafka 作为数据源导出数据。或者两种场景的需求都要。

这算是一种 kafka 生产者,消费者模式的特殊使用场景。它主要服务于数据管道的场景,为此 kafka 在0.9版本开始增加了 connect 功能,这样可以很方便使得 kafka 可以作为数据管道各个数据段的大型缓冲区,有效的解耦了管道两端的生产者和消费者。

kafka connect包含两个组件,source connector 和 sink connector。顾名思义,前者可以数据源(比如数据库,文件系统)拉取数据塞入 kafka 的 topic中。而后者则从kafka消费数据到另一个数据源(比如Elasticsearch,Hadoop)。

连接器和客户端api有什么区别

连接器和普通的生产者消费者模式有什么区别呢?似乎两种方式都可以达到目的。可能第一次接触connect的人都会由此疑问。在《kafka权威指南》这本书里,作者给出了建议:

如果你是开发人员,你会使用 Kafka 客户端将应用程序连接到
Kafka ,井修改应用程序的代码,将数据推送到 Kafka 或者从 Kafka 读取数据。

如果要将 Kafka 连接到数据存储系统,可以使用 Connect,因为这些系统不是你开发的,
构建数据管道 I 10s你无能或者也不想修改它们的代码。 Connect 可以用于从外部数据存储系统读取数据, 或
者将数据推送到外部存储系统。如果数据存储系统提供了相应的连接器,那么非开发人员
就可以通过配置连接器的方式来使用 Connect。

如果你要连接的数据存储系统没有相应的连接器,那么可以考虑使用客户端 API 或
Connect API 开发一个应用程序。我们建议首选 Connect,因为它提供了一些开箱即用的
特性,比如配置管理、偏移量存储、井行处理、错误处理,而且支持多种数据类型和标准
的 REST 管理 API。开发一个连接 Kafka 和外部数据存储系统的小应用程序看起来很简单,
但其实还有很多细节需要处理,比如数据类型和配置选项,这些无疑加大了开发的复杂
性一一毛onnect 处理了大部分细节,让你可以专注于数据的传输。

一个连接器的应用示例

这个示例,我们用kafka自带的连接器进行演示,这样我们就省去了使用 connect api 去开发一个connect的麻烦。

首先启动 zk+kafka 的环境,然后启动connect进程,

./bin/connect-distributed.sh config/connect-distributed.properties

然后我们输入下面的命令来确认下是否启动成功。

在这里插入图片描述

接着我们启动一个文件数据源,

在这里插入图片描述

解释下,

其实就是把 echo 的内容作为http post的数据发送过去,-d @-表示从管道获取数据。在这个数据中,我们指定了连接器的名字 load-kafka-config,连接器的类名,使用的是自带的FileStream-Source,需要读取的数据源的路径,当然还有kafka的topic。

这条命令执行完后,文件的内容就被发送到kafka的topic上了,我们可以通过下面这个命令来查看下,

在这里插入图片描述

我们用消费者控制台读取了topic上的消息。可以发现每一个payload包含上面读取的文件的一行。

接着我们使用一个自带的连接器把topic里的数据读出来,并且导出到文件中保存(mydata.txt),保存的文件内容应该和前面读取的那个配置文件的内容是一样的。

在这里插入图片描述


参考:

《kafka权威指南》


关注公众号:思无邪了吗

个人博客:http://www.machengyu.net

csdn博客: https://blog.csdn.net/pony_ma...

思否: https://segmentfault.com/u/ma...

发表评论

0/200
84 点赞
0 评论
收藏
为你推荐 换一批