Kafka入门篇--快速起步

本文详细介绍了Kafka的安装及配置方法,包括单机环境下的快速启动与消息传递流程,集群搭建及其容错机制测试。此外,还展示了如何利用Kafka Connect实现文件系统的数据导入与导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要内容:
1. kafka 安装、启动
2. 消息的 生产、消费
3. 配置启动集群
4. 集群下的容错测试

5. 从文件中导入数据,并导出到文件


单机示例

安装

tar -xzf kafka_2.10-0.10.1.1.tgz
cd kafka_2.10-0.10.1.1

启动

> bin/zookeeper-server-start.sh \
config/zookeeper.properties
> bin/kafka-server-start.sh \
config/server.properties

创建topic

打开一个新的终端窗口

bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 1 \
--partitions 1 \
--topic test

发送消息

打开一个新的终端窗口

bin/kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic test

进入输入模式,随意输入信息,例如:

hello world
hi

获取消息

打开一个新的终端窗口

bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--from-beginning

便会显示出刚才发送的两条消息:

hello world
hi

这时可以打开发送消息的终端窗口,输入新的信息,再返回来就可以看到自动接收到了新消息

配置集群

新建两个启动配置文件

> cp config/server.properties \
config/server-1.properties
> cp config/server.properties \
config/server-2.properties

修改 config/server-1.properties 的以下几项配置:

broker.id=1
listeners=PLAINTEXT://:9093
log.dir=logs/kafka-logs-1

修改 config/server-2.properties 的以下几项配置: 

broker.id=2
listeners=PLAINTEXT://:9094
log.dir=logs/kafka-logs-2

启动

> bin/kafka-server-start.sh \
config/server-1.properties &
> bin/kafka-server-start.sh \
config/server-2.properties &

创建一个topic,设置3个复制

bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 3 \
--partitions 1 \
--topic my-replicated-topic

发送消息

bin/kafka-console-producer.sh 
--broker-list localhost:9092 \
--topic my-replicated-topic

输入消息:

my test message 1
my test message 2

获取消息

bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--from-beginning \
--topic my-replicated-topic

可以正常取得消息

容错测试

# 取得server1的进程号
ps aux | grep server-1.properties

# 杀掉进程
kill -9 43116

读取消息

bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--from-beginning \
--topic my-replicated-topic

返回信息:

my test message 1
my test message 2

仍然可以正常取得消息

Kafka Connect

Kafka 中的 connecter 可以与外部系统进行连接,例如文件系统、数据库

下面实验一个简单文件系统交互,从一个文件中导入数据,然后导出到另一个文件中

创建一个测试文件,用于导入数据使用

echo -e "foo\nbar" > test.txt

启动 connect,执行数据的导入导出

bin/connect-standalone.sh \
config/connect-standalone.properties \
config/connect-file-source.properties \
config/connect-file-sink.properties

命令执行后,会输出一系列的日志信息,等待执行完毕

查看导出结果

cat test.sink.txt

返回结果:

foo
bar 

成功导出了 test.txt 中的数据 

过程分析

执行第2步的命令后,为什么是去读test.txt?为什么写入了test.sink.txt?中间的过程是什么样的?

原因是在于两个配置文件

config/connect-file-source.properties (导入配置)

name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=test.txt
topic=connect-test  

file指定了是从test.txt中导入数据

topic指定了把数据发送到connect-test这个topic

connect-file-sink.properties(导出配置)

name=local-file-sink
connector.class=FileStreamSink
tasks.max=1
file=test.sink.txt
topics=connect-test

file指定了把数据导出到test.txt中导入数据

topic指定从connect-test这个topic中读取数据

查看一下connect-test这个topic

bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic connect-test \
--from-beginning

结果为:

{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}

现在向test.txt中添加一条新数据:

echo "Another line" >> test.txt

再次执行 cat test.sink.txt 就会看到刚刚添加的数据:

foo
bar
Another line   

### 关于Kafka入门教程 #### 安装与配置Kafka环境 为了开始学习Kafka,了解如何在本地环境中设置Kafka是非常重要的。通过wget命令可以从Apache官方网站下载指定版本的Kafka压缩包[^1]: ```bash wget https://downloads.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz ``` 解压该文件并进入对应的目录完成初步部署工作: ```bash tar -xzf kafka_2.13-3.0.0.tgz cd kafka_2.13-3.0.0 ``` 对于Kafka的服务端配置而言,在`config/server.properties`中可以找到默认监听地址设置项。如果希望外部网络能够访问到这台服务器上的Kafka实例,则需修改此属性为实际IP地址以及开放给客户端连接使用的端口号,例如: ```properties KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.102:9092 ``` 上述操作确保了Kafka集群中的节点可以通过正确的网络接口被其他应用程序发现和通信。 #### 启动服务组件 启动Zookeeper服务作为协调者来管理Kafka broker之间的协作关系;接着再开启Kafka server本身以便处理消息生产和消费请求。具体指令如下所示: ```bash bin/zookeeper-server-start.sh config/zookeeper.properties & bin/kafka-server-start.sh config/server.properties & ``` #### 创建主题与生产测试数据 创建一个新的topic用于存储特定类型的事件流记录,并利用控制台producer工具向其中发送几条简单的字符串形式的消息样本进行验证: ```bash bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic-name echo "This is a message" | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic-name ``` 以上步骤展示了从零构建起一个简易版但功能完整的Kafka系统的全过程,这对于初学者来说是一个很好的起点去理解分布式消息队列的工作原理及其应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值