Kafka-Connect自带示例

一、上下文

《Kafka-Connect》中已经阐述了Kafka-Connect的理论知识,为了更生动的理解它,我们今天通过官方的一个小例子来感受下它的妙用。

二、创建topic

kafka-topics --create --topic connect-test --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2

三、编写配置文件

在cdh环境中,这些配置文件所在的目录为:

/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/

1、connect-standalone.properties

用于建立与Kafka集群的初始连接的主机/端口对列表。以下是cdh中的例子

bootstrap.servers=cdh1:9092,cdh2:9092,cdh3:9092

转换器指定Kafka中数据的格式以及如何将其转换为Connect数据。每个Connect用户都需要根据他们希望从Kafka加载或存储数据时使用的格式进行配置

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

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

转换器特定的设置可以通过在转换器的设置前加上我们想要应用的转换器来传递

key.converter.schemas.enable=true

value.converter.schemas.enable=true

offset.storage.file.filename=/tmp/connect.offsets

刷新速度比正常情况快得多,这对测试/调试很有用

offset.flush.interval.ms=10000

设置为用逗号(,)分隔的文件系统路径列表,以启用插件(连接器、转换器、转换)的类加载隔离。该列表应由顶级目录组成,其中包括以下内容的任意组合:

a) 直接包含带有插件及其依赖项的jar的目录

b) uber包含插件及其依赖项

c) 直接包含插件类及其依赖项的包目录结构的目录

注意:将遵循符号链接来发现依赖关系或插件。

Examples:

plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors,

#plugin.path=

2、connect-file-source.properties

name=local-file-source

connector.class=FileStreamSource

tasks.max=1

file=/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/connect-file-test-data/source.txt

topic=connect-test

3、connect-file-sink.properties

name=local-file-sink

connector.class=FileStreamSink

tasks.max=1

file=/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/connect-file-test-data/sink.txt

topics=connect-test

四、运行

bash 复制代码
cd /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/kafka/bin/
./connect-standalone.sh /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/connect-standalone.properties /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/connect-file-source.properties /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/etc/kafka/conf.dist/connect-file-sink.properties

启动成功后如图所示:

五、测试

我们项source.txt 中写入一些数据

bash 复制代码
echo 1 >> source.txt
echo 2 >> source.txt
echo 3 >> source.txt
echo 4 >> source.txt
echo 5 >> source.txt
echo 6 >> source.txt
echo 7 >> source.txt
echo 8 >> source.txt
echo 9 >> source.txt
echo 10 >> source.txt

从结果上看感觉sink.txt中结果是乱序的,这是因为我们创建topic时设置了2个分区,我们用consoumer来看看各个分区的顺序情况:

bash 复制代码
kafka-console-consumer --topic connect-test --from-beginning --bootstrap-server cdh1:9092,cdh2:9092,cdh3:9092 --partition 0
bash 复制代码
kafka-console-consumer --topic connect-test --from-beginning --bootstrap-server cdh1:9092,cdh2:9092,cdh3:9092 --partition 1

我们再次看sink.txt的结果就可以理解了,kafka只保证了分区有序,如果使用Kafka-Connect时想保证文件的输入和输出是有序的,就需要设定topic为1个分区。

相关推荐
珠海西格16 小时前
“主动预防” vs “事后补救”:分布式光伏防逆流技术的代际革命,西格电力给出标准答案
大数据·运维·服务器·分布式·云计算·能源
AC赳赳老秦18 小时前
专利附图说明:DeepSeek生成的专业技术描述与权利要求书细化
大数据·人工智能·kafka·区块链·数据库开发·数据库架构·deepseek
小邓吖19 小时前
自己做了一个工具网站
前端·分布式·后端·中间件·架构·golang
曹天骄1 天前
基于 Cloudflare Worker 构建分布式测速调度系统:KV 与 D1 数据层设计实战教程
分布式·缓存
Prince-Peng1 天前
技术架构系列 - 详解Redis
数据结构·数据库·redis·分布式·缓存·中间件·架构
曹天骄1 天前
基于 Cloudflare Worker + KV 构建高性能分布式测速调度系统(工程实战)
分布式
奋进的芋圆1 天前
Spring Boot 3 高并发事务与分布式事务企业级完整解决方案
spring boot·分布式
没有bug.的程序员1 天前
Spring Boot 与 Kafka:消息可靠性传输与幂等性设计的终极实战
java·spring boot·后端·kafka·幂等性·消息可靠
你才是臭弟弟1 天前
Docker 拉取 Kafka 镜像及策略配置
docker·容器·kafka
淡泊if1 天前
Kafka部署模式详解:从单机到分布式集群的核心选择
分布式·kafka