什么是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权威指南》
关注公众号:思无邪了吗
csdn博客: https://blog.csdn.net/pony_ma...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。