一、kafka原理:
1.broker:一个kafka实例,多个broker组成kafka集群;
2.topic:逻辑概念,同一类数据的集合,可以看做一张表;
3.producer:将数据写入topic,作为broker写数据的客户端;
4.consumer:从topic中取数据,作为broker消费数据的客户端;
5.partition:物理概念,一个topic分多个分区,分区内数据有序的消息队列,分区是一个文件夹形式,里面保存数据和索引文件;
6.replication:副本数,保存在不同的broker;
7.Consumer Group(CG, 消费者组):
一条消息可以发送给多个不同的CG,但一个CG中只能有一个Consumer读取该消息;
8.Zookeeper:
Kafka将元数据保存在Zookeeper中负责Kafka集群管理,包括配置管理、 动态扩展、 Broker负载均衡、 Leader选举,以及
Consumer Group变化时的Rebalance等;
9.Offset:是用于定位分区中消息的顺序编号;
10.00000000000000000000.index:内容是offset+position;
00000000000000000000.timeindex:内容是timestamp+offset;
11.Kafka Controller Leader:由zk选举出来,负责管理Kafka集群的分区和副本状态,避免分区副本直接在Zookeeper
上注册Watcher和竞争创建临时Znode,导致Zookeeper集群负载过重
12. Kafka Partition Leader:Kafka Controller Leader负责Partition Leader的选举
Partition Leader负责跟踪和维护ISR;
Partition Follower定期从Leader同步数据;
13.常用指令:
查看topic列表
./kafka-topic.sh --zookeeper tdh-24:2181 --list
创建topic
./kafka-topic.sh --zookeeper tdh-24:2181 --create --topic demo -- partitions 3 --replication-factor 1
查看topic描述
./kafka-topic.sh --zookeeper tdh-24:2181 --describe --topic demo
删除topic
./kafka-topic.sh --zookeeper tdh-24:2181 --delete --topic demo 标记删除 后台进程删除
生产--针对某topic
./kafka-console-producer.sh --broker-list tdh-24:9092, tdh-25:9092 --topic demo
消费--针对某topic
./kafka-console-custmer.sh --bootstrap-server tdh-24:9092 --topic demo
消费--针对某topic.重新消费
./kafka-console-custmer.sh --bootstrap-server tdh-24:9092 --topic demo --from begining --consumer -property group.id=00001test
查看某一group的topic
./kafka-cusumer-group.sh --bootstrap-server tdh-24:9092 --list
./kafka-streams-applications-reset.sh --zookeeper tdh-24:2181 --bootstrap servers tdh-24:9092 --input topics demo
application -id 00001test 重新消费