前置条件:
需要安装zookeeper集群:zookeeper学习之路(三)zk集群_解决问题no解决代码问题的博客-CSDN博客
apache-zookeeper-3.7.1-bin
kafka_2.12-2.1.1.
java "1.8.0_131"
一,安装
kafka的安装和使用
kafka.apache.org kafka_2.12-2.1.1
CentOS71- CentOS74
kafka : (CentOS72:192.168.19.28,CentOS73:192.168.19.38,CentOS74:192.168.19.48)
zookeeper : (CentOS71:192.168.19.18,CentOS72:192.168.19.28,CentOS73:192.168.19.38)
1,记录zk的目录下的内容
规范:不要在zk根目录下使用其他中间件或信息,需要添加前置路径,单独隔离开
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
2,kafka的配置文件server.properties
broker.id=0
listeners=PLAINTEXT://192.168.19.48:9092
log.dirs=/applog/kafka/
zookeepr.cooenct=192.168.19.28:2181,192.168.19.38:2181,192.168.19.18:2181/kafka
3,常规操作
/etc/profile 添加安装的中间件,是为了在任何地方都能使用对应的命令
#使生效
. /etc/profile
4,节点同步 scp
scp /etc/profile ip:/etc/profile
5.启动
zkServer.sh start
jps
cd $KAFKA_HOME/config
kafka-server-start.sh ./server.properties
6.zk查看多了kafka目录
[zk: localhost:2181(CONNECTED) 0] ls /
[kafka, zookeeper]
[zk: localhost:2181(CONNECTED) 6] get /kafka/cluster/id
{"version":"1","id":"TB1v-oDwSfC_ioil7mF7aA"}
[zk: localhost:2181(CONNECTED) 7] get /kafka/controller
{"version":1,"brokerid":1,"timestamp":"1661332307575"}
[zk: localhost:2181(CONNECTED) 8] ls /kafka/brokers
[ids, seqid, topics]
在zk里可以看到一些kafka的源数据;
每台里是只启动了一个Java的的kakka的broker,broker就是一个普通的java程序。
使用kafka需要先创建主体topic,没有的话,生产者的数据没地方去,消费者也没办法订阅。
二,使用
1,创建topics
cd $KAFKA_HOME/bin
查看topics.sh功能和对应参数
[root@localhost bin]# kafka-topics.sh
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Create, delete, describe, or change a topic.
Option Description
------ -----------
--alter Alter the number of partitions,
replica assignment, and/or
configuration for the topic.
--config <String: name=value> A topic configuration override for the
topic being created or altered.The
following is a list of valid
创建topic是由controller的broker去完成的
老版本的命令是统一的,都是zookeepr..什么的,新版本是因为zk本身是分布式协调,而不是数据存储,部分数据放到了kafka的broker内,所以命令会有不统一的问题。
partions:主题分区数。kafka通过分区策略,将不同的分区分配在一个集群中的broker上,一般会分散在不同的broker上,当只有一个broker时,所有的分区就只分配到该Broker上。
replication-factor:用来设置主题的副本数。每个主题可以有多个副本,副本位于集群中不同的broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败。
2.2版本前后创建topic的命令对比
命令是一行,我为了展示分成两行
#–zookeeper 192.168.19.28,192.168.19.38:2181/kafka
kafka-topics.sh --zookeeper 192.168.19.38:2181/kafka
--create --topic ooxx --partitions 2 --replication-factor 2
2.2版本以后 –bootstrap-server 192.168.31.51:9092 替代原先的–zookeeper 192.168.19.38:2181/kafka参数
kafka-topics.sh --bootstrap-server 192.168.19.48:9092
--create --topic ooxx --partitions 2 --replication-factor 2
创建 一个有两个分区,两个副本数,名字叫ooxx的分区
[root@localhost bin]# kafka-topics.sh --create --zookeeper 192.168.19.38:2181/kafka --topic ooxx --partitions 2 --replication-factor 2
Created topic "ooxx".
2,查看集群的分区
[root@localhost bin]# kafka-topics.sh --list --zookeeper 192.168.19.38:2181/kafka
ooxx
3,查看分区的属性
分区Partition备份只是做可靠性,实际读写操作还是leader,所以分区Partition不可能因为副本的增加而增加读写性能。
[root@localhost bin]# kafka-topics.sh --zookeeper 192.168.19.38:2181/kafka --describe --topic ooxx
Topic:ooxx PartitionCount:2 ReplicationFactor:2 Configs:
Topic: ooxx Partition: 0 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: ooxx Partition: 1 Leader: 3 Replicas: 3,1 Isr: 3,1