需要安装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)
规范:不要在zk根目录下使用其他中间件或信息,需要添加前置路径,单独隔离开
- [zk: localhost:2181(CONNECTED) 0] ls /
- [zookeeper]
- 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
/etc/profile 添加安装的中间件,是为了在任何地方都能使用对应的命令
- #使生效
- . /etc/profile
scp /etc/profile ip:/etc/profile
- zkServer.sh start
-
- jps
-
- cd $KAFKA_HOME/config
-
- kafka-server-start.sh ./server.properties
- [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,没有的话,生产者的数据没地方去,消费者也没办法订阅。
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".
- [root@localhost bin]# kafka-topics.sh --list --zookeeper 192.168.19.38:2181/kafka
- ooxx
分区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