目录
Linux内核:Centos7
Kafka版本:3.5.1
Kafka的安装目录:/usr/local/kafka_2.12-3.5.1
Kafka的bin文件夹的目录:/usr/local/kafka_2.12-3.5.1/bin
Kafka的配置文件夹的目录: /usr/local/kafka_2.12-3.5.1/conf
因为资源有限,本人在学习时,是在同一台机器上搭建的kafka集群,操作如下:
server2.properties,server2.properties,如下图:

- broker.id=0、1、2 -- 标识每个启动的kafka实例的编号
- listeners=PLAINTEXT://${broker所在地址IP}:${当前kafka欲使用的端口号},如listeners=PLAINTEXT://192.168.154.128:9092或者9093或者9094
- log.dir= **
举个实例:
server.properties中:
broker.id=0 listeners=PLAINTEXT://192.168.154.128:9092 -- 192.168.154.128是kafka所在服务器的IP log.dirs=/usr/local/kafka_2.12-3.5.1/logserver2.propetties中
broker.id=1 listeners=PLAINTEXT://192.168.154.128:9093 -- 192.168.154.128是kafka所在服务器的IP log.dirs=/usr/local/kafka_2.12-3.5.1/log2server3.properties中
broker.id=2 listeners=PLAINTEXT://192.168.154.128:9094 -- 192.168.154.128是kafka所在服务器的IP log.dirs=/usr/local/kafka_2.12-3.5.1/log3
挨个启动即可(切换到kafka的根路径下执行):
- [root@localhost kafka_2.12-3.5.1]# cd /usr/local/kafka_2.12-3.5.1/
-
- [root@localhost kafka_2.12-3.5.1]# ./kafka-server-start.sh -daemon ./server.properties
-
- [root@localhost kafka_2.12-3.5.1]# ./kafka-server-start.sh -daemon ./server2.properties
-
- [root@localhost kafka_2.12-3.5.1]# ./kafka-server-start.sh -daemon ./server3.properties
cd到zookeeper中查看
- [root@localhost bin]# cd /usr/local/apache-zookeeper-3.8.2/bin
-
- [root@localhost bin]# ./zkCli.sh
-
- [zk: localhost:2181(CONNECTED) 0] ls /
- [admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
-
- [zk: localhost:2181(CONNECTED) 2] ls /brokers
- [ids, seqid, topics]
-
- [zk: localhost:2181(CONNECTED) 3] ls /brokers/ids
- [0,1,2] //说明启动了三个节点
-
- [zk: localhost:2181(CONNECTED) 4]
[root@localhost kafka_2.12-3.5.1]# ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --replication-factor 3 --partitions 2 --topic topic0921
[root@localhost kafka_2.12-3.5.1]# ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic topic0921
会展示如下结果:

说明:
Topic: 主题名称
Partition:分区编号
Leader: 分区的Leader的broker编号。副本里面的Leard来接收消息,其他follower通过poll的形式同步消息
Replicas: 当前分区的副本所在哪些broker实例上(对应kafka实例配置文件中的kroker.id)
Isr: 可以同步的broker节点 和 已同步的broker节点。换句话说,存放的是:当前分区的副本中:Leader节点、以及可正常同步数据,且已经同步了数据的follower节点
基础概念的讲解,请参考:Linux:【Kafka三】组件介绍
下面画图解释:

分区:相当于是对消息的物理分割,一个消息,只能存在于一个分区中。多个分区可理解为消息的多线程任务。
副本:每个分区都可以在集团的broker中创建副本,用以对分区中消息的备份。作为副本的broker上,在日志文件中,会同时产生备份了分区的文件:
- cd到broker1的日志文件中
- [root@localhost log2]# cd /usr/local/kafka_2.12-3.5.1/log2/
-
- [root@localhost log2]# ll
-
- -rw-r--r--. 1 root root 0 9月 19 18:21 cleaner-offset-checkpoint
- -rw-r--r--. 1 root root 4 10月 13 10:54 log-start-offset-checkpoint
- -rw-r--r--. 1 root root 88 9月 21 17:21 meta.properties
- -rw-r--r--. 1 root root 32 10月 13 10:54 recovery-point-offset-checkpoint
- -rw-r--r--. 1 root root 32 10月 13 10:54 replication-offset-checkpoint
- drwxr-xr-x. 2 root root 167 9月 21 17:27 topic0921-0 # 主题第一个分区的备份文件
- drwxr-xr-x. 2 root root 167 9月 21 17:27 topic0921-1 # 主题第二个分区的备份文件