这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
Kafka在以前的版本中,安装是需要依赖ZK的(早期版本的kafka用zk做meta元数据信息存储,consumer的消费状态,group的管理,offset值等),但是在2.8之后就不再需要依赖ZK了,而是内部基于Raft来自己管理了,这里也交代下ZK下的安装。
下载安装包
JDK这些基本环境是必须的。
- 下载zk
- 下载kafka
- kafka.apache.org/downloads 官网下载解压即可
注意下,kafka和zk的版本最好能对应好,不然可能会出现一些问题。建议配置:
配置
- 配置ZK集群
- 主要修改:
server.properties配置文件 zookeeper.connect=node1:2181,node2:2181,node3:2181log.dirs=/xx/env/kafka_2.13-2.8.0/datas/logs
- 主要修改:
- 配置kafka集群
- 主要修改:
config/server.properties配置文件 broker.id=1:broker.id是kafka broker的编号,每个broker的id需不同log.dir=/data/kafka/log:日志目录zookeeper.connect=localhost:2183:zk的地址
- 主要修改:
启动
-
启动ZK
-
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
-
-
启动Kafka
-
bin/kafka-server-start.sh config/server.properties
-
测试
-
创建 topic
-
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic XXX -
这里我们创建了一个top,名为XXX,他只有一个分区和一个副本。我们可以通过下面的命令查看我们所创建的topic
-
查看topic的信息:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic XXX -
查看所有的topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181
-
-
发送消息
-
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic XXX -
broker-list 指定了连接的Kafka集群地址【生产者】
-
输入这行命令后,我们就可以进入生产这的一个shell交互页面(Kafka自带的一个命令行客户端,从文件或标准输入中获取输入,并将其作为message发送到Kafka集群。默认情况下,以单行作为message发送),我们在里面输入文本就被被发送到Kafka的队列里面。
-
-
消费消息
-
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo --from-beginning -
bootstrap-server 指定了连接的 Kafka 集群地址【消费者】
-
--from-beginning 表示每次执行该命令的时候,都从头部开始重新消费。因为kafka有组的概念,同一个组消费过的数据是有offset记录的,下次消费的时候会从上次消费结束为止再进行消费。我们通过该参数可以保证每次都是从头开始消费。
-
这里开启一个consumer就会不断监听消费者发送到队列里面的消息,然后不断的打印出来。
-