初识Kafka,快速搭建

421 阅读2分钟

下载安装

  • 方式一:

通过官网网站下载 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 消费者从开始位置获取队列中的数据

启动多节点集群

  1. 创建各个节点的配置文件(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
  1. 修改各个配置文件内容:
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
  1. 使用以上配置启动 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 &
  1. 集群模式创建一个 topic:
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic
  1. 查看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>