什么是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权威指南》