目录
环境简介
一、搭建kafka集群
1.1、复制出两个kafka的配置文件
1.2、修改配置文件中的如下属性
二、启动kafka集群
三、可校验kafka三个节点是否均启动成功
四、查看集群中主题的分区和副本
4.1、新建一个包含了分区和副本的主题
4.2、查看该主题的详细信息
五、分区、副本的二次解释
环境简介
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集群
因为资源有限,本人在学习时,是在同一台机器上搭建的kafka集群,操作如下:
1.1、复制出两个kafka的配置文件
server2.properties,server2.properties,如下图:
1.2、修改配置文件中的如下属性
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=0listeners=PLAINTEXT://192.168.154.128:9092 -- 192.168.154.128是kafka所在服务器的IPlog.dirs=/usr/local/kafka_2.12-3.5.1/log
server2.propetties中
broker.id=1listeners=PLAINTEXT://192.168.154.128:9093 -- 192.168.154.128是kafka所在服务器的IPlog.dirs=/usr/local/kafka_2.12-3.5.1/log2
server3.properties中
broker.id=2listeners=PLAINTEXT://192.168.154.128:9094 -- 192.168.154.128是kafka所在服务器的IPlog.dirs=/usr/local/kafka_2.12-3.5.1/log3
二、启动kafka集群
挨个启动即可(切换到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
三、可校验kafka三个节点是否均启动成功
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]
四、查看集群中主题的分区和副本
4.1、新建一个包含了分区和副本的主题
[root@localhost kafka_2.12-3.5.1]# ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --replication-factor 3 --partitions 2 --topic topic0921
4.2、查看该主题的详细信息
[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 # 主题第二个分区的备份文件