下载安装
- 方式一:
通过官网网站下载 tgz 包并上传到服务器解压,下载地址(kafka_2.12-2.4.0.tgz)。
- 方式二:
直接在服务器上 curl -O <下载地址>, 如下:
curl -0 http://mirror.bit.edu.cn/apache/kafka/2.4.0/kafka_2.12-2.4.0.tgz
tar -xzf kafka_2.12-2.4.0.tgz
cd kafka_2.12-2.4.0
启动单节点
kafka 使用了 zookeeper 来管理集群节点,所以需要先启动一个zookeeper,zookeeper已经包含在kafka中了,不需要额外搭建。
nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties &
然后启动 kafka 节点
nohup ./bin/kafka-server-start.sh config/server.properties &
创建一个Topic
我们可以使用以下命令在服务端创建一个 topic:
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytopic
- --create 创建命令,另外还有 --delete 删除topic
- --bootstrap-server 指定连接的节点地址
- --replication-factor topic副本数
- --partitions 当前topic对应的分区数,分区可以理解为队列。
查看已经创建的 topic 列表:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
收发消息
生产者
启动一个生产者,命令执行完会进入交互模式。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic
> hello kafka!!!
> end.
- --broker-list 节点列表,可以向多个发送消息,HOST1:PORT1,HOST2:PORT2.
消费者
启动一个消费者,订阅一个topic,生产者往这个topic发送消息时,会在消费端显示。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --from-beginning
> hello kafka!!!
> end.
- --from-beginning 消费者从开始位置获取队列中的数据
启动多节点集群
- 创建各个节点的配置文件(
server.properties):
cp config/server.properties config/cluster/server-00.properties
cp config/server.properties config/cluster/server-01.properties
cp config/server.properties config/cluster/server-02.properties
- 修改各个配置文件内容:
config/cluster/server-00.properties:
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs-00
config/cluster/server-01.properties:
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-01
config/cluster/server-00.properties:
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs-02
- 使用以上配置启动 kafka broker:
nohup ./bin/kafka-server-start.sh config/cluster/server-00.properties &
nohup ./bin/kafka-server-start.sh config/cluster/server-01.properties &
nohup ./bin/kafka-server-start.sh config/cluster/server-02.properties &
- 集群模式创建一个 topic:
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic
- 查看topic描述信息:
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
返回结果含义:
- Topic 当前查询的主题
- PartitionCount 当前主题对应的 partition 数量
- ReplicationFactor topic副本数
- Leader leader节点的broker.id
- Replicas 副本节点broker.id
- Isr 当前仍然处于活动状态的副本节点broker.id
基本操作
列出所有topic
bin/kafka-topics.sh --zookeeper node01:2181 --list
删除topic
bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic <topic_name>