kafka常用命令个人理解,小白认知不专业
启动zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
启动kafka节点
bin/kafka-server-start.sh config/server.properties
创建主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic replication-test
说明:--create:动作参数 创建主题; --zookeeper localhost:2181: 集群位置确定;
--replication-factor:备份数; --partitions:分区数;
--topic: 主题名称
查看集群描述
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
说明: --describe:动作参数 描述集群; --zookeeper localhost:2181 集群位置确定
--topic:主题名称
创建生产者
旧生产者 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
新生产者 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties
创建消费者
旧消费者 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test
新消费者 bin/kafka-console-consumer.sh
--bootstrap-server localhost:9092 --topic test
--new-consumer --from-beginning --consumer.config config/consumer.properties
疑问:为什么许多命令里面都带有zookeeper参数,kafka和zookeeper有什么联系?
首先梳理一下kafka工作流程:
主题(topic)可以看作是一个消息的分类标签, 每一个主题的消息都可以被分成多个分区(Partitions), 分区被分布在不同的broker上作为备份(Replication), 为了保证分布式的可靠性,可以有效处理其中broker宕机的情况(但是必须保证超过半数的别人broker是正常的,否则分区数据不全导致同主题消息不完整).
ZooKeeper是一个快速、高可用、容错、分布式的协调服务,用于分布式系统的协调,被用来管理协调broker。Kafka集群是把broker状态保存在Zookeeper中的。
典型的ZooKeeper ensemble,一台服务器作为Leader,其它作为Follower。当Ensemble启动时,先选出Leader,然后所有Follower复制Leader的状态。所有写请求都通过Leader路由,变更会广播给所有Follower。