下面Windows
命令需要把cmd
路径切换到bin/windows
下。
而Linux
命令只需要在控制台切换到bin
目录下即可。
下面都以Windows
下的操作为例,在Linux
下也是一样的。
kafka-topics.bat # Windows
kafka-topics.sh # Linux
输入以上命令就可以看到主题命令可以附加哪些参数来执行,参数有很多,这里归纳几个常用的:
参数 | 说明 |
---|---|
–bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
–topic | 操作的 topic 名称。 |
–create | 创建主题。 |
–delete | 删除主题。 |
–alter | 修改主题。 |
–list | 查看所有主题。 |
–describe | 查看主题详细描述。 |
–partitions |
设置分区数。 |
–replication-factor |
设置分区副本。 |
–config |
更新系统默认的配置。 |
kafka-topics.bat --bootstrap-server localhost:9092 --list
Kafka默认在9092端口上运行
kafka-topics.bat --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test
--partitions
:指定分区数,参数要根据broker
数和数据量决定,有几个broker
则可以指定几个分区
--replication-factor
: 指定副本数,也有根据有几个broker
来决定
--topic
:指定topic
名字
kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test
这里主要注意后面第二排参数的意义即可。
Topic:test
:主体的名称是test
。
Partition
:分区编号是0,代表只有一个分区,编号从0开始
Leader
:每个分区多个副本的主节点编号,这个在集群中才会是其它值,这里是单机模式,值等于唯一副本编号
Replicas
:副本编号,也是从0开始。
kafka-topics.bat --bootstrap-server localhost:9092 --alter --topic test --partitions 2
注意:分区数只能增加,不能减少
kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test
kafka-topics.bat --bootstrap-server localhost:9092 --delete --topic test
下面Windows
命令需要把cmd
路径切换到bin/windows
下。
kafka-console-producer.bat
常用参数:
参数 | 说明 |
---|---|
–bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
–topic | 操作的 topic 名称。 |
主要就是要说明要连接哪个Kafka
服务器或者集群。
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test
此时光标处就可以输入数据,输入的数据会放入本机kafka
服务器test
这个主题当中。
kafka-console-consuer.bat
常用参数:
参数 | 说明 |
---|---|
–bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
–topic | 操作的 topic 名称。 |
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic test
这些示例都基于上面的主题test
来进行操作。
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test
此时输入一个hello
数据然后回车,队列中就加入了一条数据。
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
发现此时并没有消费到刚才的数据。
此时再看消费者,发现消费者已经消费到了Kafka
这条数据。
这时候就发现了一个问题,消费者只能消费消费者出现之后的数据,之前的历史数据则不能直接被消费。
如果想要读取历史数据,可以选择把主题中的数据全部读取出来。
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic test