kafka2.x常⽤命令笔记(⼀)创建topic,查看topic列表、
分区、副本详情,删除。。。
美丽的校园 作文总结/朱季谦
接触kafka开发已经两年多,也看过关于kafka的⼀些书,但⼀直没有怎么对它做总结,借着最近正好在看《Apache Kafka实战》⼀书,同时⾃⼰⼜搭建了三台kafka服务器,正好可以做⼀些总结记录。
本⽂主要是记录如何在kafka集服务器上创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费,算是最基础的操作了,当然,不同版本其实指令是有所差异的,本⽂只针对kafka 2.x版本。虽然这些指令都很简单,但久不⽤了,很容易就会忘记,所谓好记性不如烂笔头,记录下来会更好。
主要写给⼀些刚接触kafka的⼩⽩,⼤神请⾃⾏绕路。
我会⼀步⼀步记录,从简到原理。
1、创建⼀个名为test-topic的topic,该topic有3个分区,每个分区分配3个副本——
.
车辆工程专业学什么/kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --create --topic test-topic --partitions 3 --replication-factor 3
创建成功时,会提⽰:Created topic test-topic.
2、查看kafka集已有topic列表——
./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 -list
查询情况会显⽰出所有的topic名——
3、查看topic的分区与备份详细情况——
./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --describe --topic test-topic
例如,我在虚拟机上查看如下
PartitionCount:表⽰总共有3个分区;
ReplicationFactor:表⽰每个分区有3个副本备份;
该kafka集分布部署在三台机器上,三个节点的id分别为0,1,2。截图当中,显⽰有0,1,2的字样,即分别代表了三台节点服务器,说明该test-topic三个分区各⾃均匀分配在三台机器上,分区的leader副本与三个follower副本同样均匀在三台机器上,这能起到防⽌数据丢失的作⽤。
最后,还有⼀个ISR,该参数全称,in-sync replica,它维护了⼀个集合,例如截图⾥的2,0,1,代表2,0,1副本保存的消息⽇志与leader 副本是保持⼀致的,只有保持⼀致的副本(包括所有副本),才会被维护在ISR集合⾥,当出现⼀定程度的不同步时,就会将该对应已经不⼀致的副本移出ISR集合,但是,这种移出并⾮永久的,⼀旦被移出的副本慢慢⼜恢复与leader⼀样时,那么,⼜会被加回isr集合当中。注意⼀点,只有在这个ISR⾥的副本服务器,才能在leader出现问题时有机会被选举为新的leader。
4、删除topic——上岗证在那里办
长歌行的古诗./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --delete --topic test-topic
执⾏该语句后,会显⽰以下信息——
Topic test-topic is marked for deletion.
Note: This will have no impact able is not set to true.
翻译过来,就是说,主题test-topic标记为删除,但如果able未设置为true,这将没有影响。
也就是说,如果able未设置为true,即使执⾏了该语句,但也不会被删除,只会被标记⼀个删除状态⽽已,该
5、验证集消息发送与消费
kafka默认提供了两个脚本:kafka-console-producer.sh与kafka-console-consumer.sh。
可以直接使⽤这两个脚本验证集是否能正常发送消息与消费消息。
开启⼀个⽣产者——
./kafka-console-producer.sh --broker-list kafka1:9092, kafka2:9092, kafka3:9092 --topic test-topic2
在其他两台机器上分别开启两个消费者——
狙>车载蓝牙./kafka-console-consumer.sh --bootstrap-server kafka1:9092, kafka2:9092, kafka3:9092 --topic test-topic2 --from-beginning ⼤概效果如下——
⽣产者:
消费者:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论