kafka消息队列4-命令行相关操作

一 主题操作

1. 查看主题

./kafka-topics.sh --bootstrap-server Kafka集群连接地址 --list

liujian@liujiandeMacBook-Pro bin % ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list  
SimpTopicTest
__consumer_offsets
liujian@liujiandeMacBook-Pro bin %

查看所有主题的详细信息:
./kafka-topics.sh --bootstrap-server Kafka集群连接地址 --describe

2. 新建主题

kafka-topics.sh --zookeeper zookeeper集群连接地址 --create --topic 主题名称 --replication-factor 副本数 --partitions 分区数
或者
kafka-topics.sh --bootstrap-server kafka集群连接地址 --create --topic 主题名称 --replication-factor 副本数 --partitions 分区数

连接zookeeper集群创建

# 创建一个名为salulu_test_z的主题,有3个分区 没有副本(复制因子为1则不进行复制,只保存一份数据)
[root@6029b019bb22 bin]$ ./kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic salulu_test_z --replication-factor 1 --partitions 3
Created topic salulu_test_z.
# 查看所有主题列表
[root@6029b019bb22 bin]$ ./kafka-topics.sh --zookeeper localhost:2181 --list
SimpTopicTest
__consumer_offsets
salulu_test_z
test_mete_data2
[root@6029b019bb22 bin]$ 

连接kafka集群创建(推荐)

# 创建一个名为salulu_test_k的主题,有3个分区 每个分区的数据有3份
root@6029b019bb22 bin]$ ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --create --topic salulu_test_k --replication-factor 3 --partitions 3
# 查看所有主题列表
[root@6029b019bb22 bin]$ ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list
SimpTopicTest
__consumer_offsets
salulu_test_k
salulu_test_z
test_mete_data2
[root@6029b019bb22 bin]$

–replication-factor 复制因子说明
复制因子(副本数):指定分区数据有多少份。如果为1则说明数据有1份。如果为2则说明有1份数据和1分数据的备份。如果为3则说明有1份数据和2份数据的备份。
所以这个值最少为1,最大值为集群节点个数。

3. 删除主题

./kafka-topics.sh --bootstrap-server kafka集群地址 --delete --topic 主题名称
测试删除salulu_test_k这个主题
删除前的文件:
salulu_test_k-0
salulu_test_k-1
salulu_test_k-2
执行删除命令后(一段时间内)的文件(加了一个delete的标记)
salulu_test_k-0.0298f52a34ce40cc83c2176e02323a93-delete
salulu_test_k-1.c0e3021b121044de8b1acd2a851fa885-delete
salulu_test_k-2.f46557d2e96b4323bf18cdc99c489f76-delete
最终这些文件被真实删除
命令:

./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --delete --topic salulu_test_k

补充:关于delete.topic.enable = true这个配置,在当前这个版本(kafka_2.12-2.4.1)下是无效的,不管是否配置了这个真删除的参数,删除主题都是会被真实删除的。

二 分区操作

1. 增加分区

./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --alter --topic salulu_test_z --partitions 32
salulu_test_z这个主题原来是3个分区,现在把它改为32个分区

./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --alter --topic salulu_test_z --partitions 32

2. 减少分区

无法减少分区,因为数据是存在分区里的,删了分区数据就会被删了,所有没有减少分区这个功能。

三 消费者组管理

1. 查看消费者组列表

./kafka-consumer-groups.sh --bootstrap-server kafka集群地址 --list

[root@6029b019bb22 bin]$ ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
console-consumer-83214
[root@6029b019bb22 bin]$

2. 查看指定的消费者详情

# 列出消费者组
[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
console-consumer-83214

# 查看console-consumer-83214这个消费者组的详情
[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group console-consumer-83214

GROUP                  TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                                            HOST            CLIENT-ID
console-consumer-83214 SimpTopicTest   0          -               10              -               consumer-console-consumer-83214-1-fde8071f-fba2-4511-9698-fa3a495e171f /192.168.0.2    consumer-console-consumer-83214-1
[root@6029b019bb22 bin]%

3. 删除消费组

./kafka-consumer-groups.sh --bootstrap-server kafka集群地址 --delete --group 消费组名称

# 删除的时候如果消费者正在使用,则会删除失败并报错
[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --delete --group console-consumer-83214
Error: Deletion of some consumer groups failed:
* Group 'console-consumer-83214' could not be deleted due to: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: The group is not empty.

# 将该消费者组停止使用之后,可以成功删除该消费组
[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --delete --group console-consumer-83214
Deletion of requested consumer groups ('console-consumer-83214') was successful.
[root@6029b019bb22 bin]%

4. 消费者组的偏移量管理

4.1 查看消费者组的消费偏移量

使用消费者组的详情的命令,显示出的结果中就包含了消费者组消费的偏移量记录

4.2 重置消费者组的偏移量

./kafka-consumer-groups.sh --bootstrap-server 集群地址 --group 消费组名称 --topic 消费的主题名称 --reset-offsets --to-earliest --execute

[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group console-consumer-81310 --topic SimpTopicTest --reset-offsets --to-earliest --execute

GROUP                          TOPIC                          PARTITION  NEW-OFFSET     
console-consumer-81310         SimpTopicTest                  0          0              
[root@6029b019bb22 bin]%
4.3 指定消费任意偏移量
[root@6029b019bb22 bin]% ./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group console-consumer-81310 --topic SimpTopicTest --reset-offsets --to-offset 6 --execute

GROUP                          TOPIC                          PARTITION  NEW-OFFSET     
console-consumer-81310         SimpTopicTest                  0          6              
[root@6029b019bb22 bin]%
4.4 验证和参数说明
  • 指定消费者组名称消费
./kafka-console-consumer.sh --bootstrap-server kafka01:9092,kafka02:9092,kafka03:9092 --group console-consumer-81310 --topic SimpTopicTes
  • 修改消费下标的几种方式
--to-earliest:把位移调整到分区当前最小位移
--to-latest:把位移调整到分区当前最新位移
--to-current:把位移调整到分区当前位移
--to-offset <offset>: 把位移调整到指定位移处
--shift-by N: 把位移调整到当前位移 + N处,注意N可以是负数,表示向前移动
--to-datetime <datetime>:把位移调整到大于给定时间的最早位移处,datetime格式是yyyy-MM-ddTHH:mm:ss.xxx,比如2017-08-04T00:00:00.000
--by-duration <duration>:把位移调整到距离当前时间指定间隔的位移处,duration格式是PnDTnHnMnS,比如PT0H5M0S
--from-file <file>:从CSV文件中读取调整策略
  • 执行方式
--execute:执行真正的位移调整
--export:把位移调整方案按照CSV格式打印,方便用户成csv文件,供后续直接使用
什么参数都不加:只是打印出位移调整方案,不具体执行

四 动态修改配置

使用kafka-configs.sh脚本,可以对配置进行实时修改。

1. 参数说明

--zookeeper:使用zookeeper来配置,支持三种类型的配置的修改(topics,clients,users)
--bootstrap-server:使用broker连接,支持一种类型的配置的修改(brokers)
--command-config:包含要传递给admin client的配置的属性文件
--alter:指定需要修改的配置
--describe:展示指定的配置信息
--entity-type:配置信息类型(topics,clients,users,brokers)
--entity-name:entity名称(topicName,clientId,userId,brokerId)
--add-config:要添加的键值对信息,例如:'k1=v1,k2=[v01,v02]'
--entity-default:默认的entity-name
--delete-config:删除指定的配置项,例如:'k1,k2'
--force:禁用控制台提示

2. 新增(修改)和查看配置项

  • 新增
    ./kafka-configs.sh --zookeeper 连接地址 --alter --entity-type topics --entity-name 主题名称 --add-config ‘k1=v1, k2=v2, k3=v3’
  • 修改
    修改的用法和新增一样,它会对参数值进行覆盖。
  • 查看
    ./kafka-configs.sh --zookeeper 连接地址 --entity-type topics --entity-name 主题名称 --describe
    示例:
# 为指定的主题新增一个配置项
[root@6029b019bb22 bin]% ./kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name salulu_test_z --add-config 'max.message.bytes=7777777'
Completed Updating config for entity: topic 'salulu_test_z'.

# 查看指定主题的配置项信息
[root@6029b019bb22 bin]% ./kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name salulu_test_z --describe
Configs for topic 'salulu_test_z' are max.message.bytes=7777777

3. 删除指定的配置项

./kafka-configs.sh --zookeeper 连接地址 --alter --entity-type topics --entity-name 主题名称 --delete-config ‘k1,k2’
示例:

# 删除指定主题的指定配置
[root@6029b019bb22 bin]% ./kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name salulu_test_z --delete-config 'max.message.bytes'
Completed Updating config for entity: topic 'salulu_test_z'.

# 查看该主题的配置信息(当前为空)
[root@6029b019bb22 bin]% ./kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name salulu_test_z --describe
Configs for topic 'salulu_test_z' are 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值