目录
1、集群运维命令
1.1、集群启停命令
bin/kafka-server-start.sh -daemon config/server.properties
bin/kafka-server-stop.sh
1.3、集群迁移命令
- consumer.config <file>: 指定消费者的配置文件。该文件包含了消费源集群的相关配置,如连接信息、组ID等。
- producer.config <file>: 指定生产者的配置文件。该文件包含了生产者写入目标集群的相关配置,如连接信息、压缩方式等。
- whitelist <topic>: 指定需要镜像的主题列表,可以使用逗号分隔多个主题名。
- blacklist <topic>: 指定需要排除镜像的主题列表,可以使用逗号分隔多个主题名。与--whitelist互斥。
- num.streams <number>: 指定消费者线程数量,默认是1。
- message.handler <class>: 自定义消息处理类,可以在消息写入目标集群前对其进行处理。
- message.handler.args <args>: 传递给自定义消息处理类的参数。
- abort.on.send.failure <true|false>: 是否在发送失败时终止镜像过程,默认为true。
- offset.commit.interval.ms <number>: 定期提交消费者偏移量的间隔时间,默认是60000ms(1分钟)
#将指定topic按照消费者配置调用生产者发送到指定集群
bin/kafka-mirror-maker.sh --consumer.config consumer.properties --producer.config producer.properties --whitelist "topic1,topic2"
1.4、权限管理命令
1.4.1、权限参数介绍
- principal: 代表用户或服务主体,例如 User:Alice。
- host: 允许或拒绝访问的主机地址,* 表示任意主机。
- operation: 允许或拒绝的操作类型,例如 READ, WRITE, ALL。
- permissionType: 权限类型,可以是 ALLOW 或 DENY。
- resourceType: 资源类型,例如 TOPIC 或 GROUP。
- name: 资源名称,例如 example-topic。
- patternType: 资源模式类型,LITERAL 表示字面模式。
1.4.2、增加权限命令
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--remove --allow-principal User:user1 --operation Write --topic my-topic
1.4.3、移出权限命令
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--remove --allow-principal User:user1 --operation Write --topic my-topic
1.4.4、查看所有topic权限命令
bin/kafka-acls.sh --list --bootstrap-server localhost:9092
Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=example-topic, patternType=LITERAL)`:
(principal=User:Alice, host=*, operation=READ, permissionType=ALLOW)
(principal=User:Bob, host=192.168.1.100, operation=WRITE, permissionType=ALLOW)
(principal=User:Carol, host=*, operation=READ, permissionType=DENY)
Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=another-topic, patternType=LITERAL)`:
(principal=User:David, host=192.168.1.101, operation=READ, permissionType=ALLOW)
Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=example-group, patternType=LITERAL)`:
(principal=User:Admin, host=*, operation=ALL, permissionType=ALLOW)
1.4.5、查看某个topic权限命令
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--list --topic my-topic
2、生产者命令
2.1、创建topic命令
bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
2.2、删除topic命令
bin/kafka-topics.sh --delete --topic my_topic --bootstrap-server localhost:9092
2.3、修改topic命令
2.3.1、修改配置命令
kafka-topics.sh --alter --bootstrap-server localhost:9092 --topic topicName --config flush.messages=1
2.3.2、删除配置命令
kafka-topics.sh --alter --bootstrap-server localhost:9092 --topic topicName --delete-config flush.messages
2.4、查询topic命令
2.4.1、查询topic列表命令
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
2.4.2、查看某个topic详情命令
bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server localhost:9092
2.4.2、查看某个topic配置命令
bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic --alter --add-config retention.ms=3600000
Configs for topic 'my_topic' are:
cleanup.policy=delete
compression.type=producer
delete.retention.ms=86400000
file.delete.delay.ms=60000
flush.messages=9223372036854775807
flush.ms=9223372036854775807
follower.replication.throttled.replicas=
index.interval.bytes=4096
leader.replication.throttled.replicas=
max.message.bytes=1000012
message.downconversion.enable=true
message.format.version=2.7-IV0
message.timestamp.difference.max.ms=9223372036854775807
message.timestamp.type=CreateTime
min.cleanable.dirty.ratio=0.5
min.compaction.lag.ms=0
min.insync.replicas=1
preallocate=false
retention.bytes=-1
retention.ms=604800000
segment.bytes=1073741824
segment.index.bytes=10485760
segment.jitter.ms=0
segment.ms=604800000
unclean.leader.election.enable=false
2.5、发送消息命令
#默认发送消息
bin/kafka-console-producer.sh --topic my-topic --bootstrap-server localhost:9092
#指定分区发送命令
kafka-console-producer.sh --topic my-topic 2 --broker-list localhost:9092
3、消费者命令
3.1、消费者组命令
3.1.1、查看消费者组列表命令
#查看消费组列表命令
bin/kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
group1
group2
group3
my_consumer_group
another_consumer_group
3.1.2、查看消费者组成员命令
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test_group --members
CONSUMER-ID HOST CLIENT-ID #PARTITIONS
consumer-1-2d7d59c3-64c9-4526-905b-4e8920db3e84 /192.168.1.36 consumer-1 2
3.1.3、查看某个消费组详情命令
bin/kafka-consumer-groups.sh --describe --group my_group --bootstrap-server localhost:9092
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
my_group my_topic 0 12345 12350 5 consumer-1-1 /192.168.1.1 consumer-1
my_group my_topic 1 23456 23460 4 consumer-1-2 /192.168.1.1 consumer-1
my_group my_topic 2 34567 34567 0 consumer-1-3 /192.168.1.1 consumer-1
3.1.4、查看某个消费者组状态命令
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --state
COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS
192.168.1.36:9092 (1) range Stable 1
3.3、消费消息命令
#从头消费命令
bin/kafka-console-consumer.sh --topic my-topic --bootstrap-server localhost:9092 --from-beginning
#指定分区消费命令
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning --partition 1
#指定消费者组id消费命令
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning --consumer-property group.id=test
4、性能测试命令
4.1、生产者测试命令
bin/kafka-producer-perf-test.sh --topic perf-test --num-records 1000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=127.0.0.1:9092 compression.type=lz4
1000 records sent, 3424.657534 records/sec (3.34 MB/sec), 13.61 ms avg latency, 255.00 ms max latency, 13 ms 50th, 20 ms 95th, 255 ms 99th.
-h, --help 显示使用帮助并退出
--topic 指定生产的消息发往的 topic
--num-records 指定生产的消息总数
--payload-delimeter 如果通过 --payload-file 指定了从文件中获取消息内容,那么这个参数的意义是指定文件的消息分隔符,默认值为 \n,即文件的每一行视为一条消息;如果未指定 --payload-file 则此参数不生效
--throughput 限制每秒发送的最大的消息数,设为 -1 表示不限制
--producer-props 直接指定 Producer 配置,格式为 NAME=VALUE,例如 bootstrap.server=127.0.0.1:9092,通过此种方式指定的配置优先级高于 --producer.config
--producer-config 指定 Producer 的配置文件,格式参照官方的 config/producer.properties
--print-metrics 在测试结束后打印更详尽的指标,默认为 false
--transactional-id 指定事务 ID,测试并发事务的性能时需要,只有在 --transaction-duration-ms > 0 时生效,默认值为 performance-producer-default-transactional-id
--transactional-duration-ms 指定事务持续的最长时间,超过这段时间后就会调用 commitTransaction 来提交事务,只有指定了 > 0 的值才会开启事务,默认值为 0
--record-size 指定每条消息的大小,单位是字节,和 --payload-file 两个中必须指定一个,但不能同时指定
--payload-file 指定消息的来源文件,只支持 UTF-8 编码的文本文件,文件的消息分隔符通过 --payload-delimeter 指定,和 --record-size 两个中必须指定一个,但不能同时指定
4.2、消费者测试命令
bin/kafka-consumer-perf-test.sh --bootstrap-server 127.0.0.1:9092 --topic perf_test --messages 1000000 --threads 8 --reporting-interval 1000 --show-detailed
time, threadId, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2021-03-25 15:57:59:426, 0, 657.2275, 657.2275, 673001, 673001.0000, 1616659078690, -1616659077690, 0.0000, 0.0000
...
***************************输入参数解释***************************
--bootstrap-server 指定 broker 地址,必选,除非用 --broker-list 代替(不建议)
--topic 指定消费的 topic,必选
--version 输出 Kafka 版本
--consumer.config 指定 Consumer 配置文件
--date-format 指定用于格式化 *.time 的规则,默认为 yyyy-MM-dd HH:mm:ss:SSS
--fetch-size 指定一次请求消费的大小,默认为 1048576 即 1 MB
--from-latest 如果 Consumer 没有已经建立的 offset,则指定从 log 中最新的位点开始消费,而不是从最早的位点开始消费
--group 指定 ConsumerGroup ID,默认为 perf-consumer-40924
--help 显示使用帮助并退出
--hide-header 指定后不输出 header 信息
--messages 指定消费的消息数量,必选
--num-fetch-threads 指定 fetcher 线程的数量
--print-metrics 指定打印 metrics 信息
--reporting-interval 指定打印进度信息的时间间隔,默认为 5000 即 5 秒
--show-detailed-stats 指定每隔一段时间(由 --reporting-interval 指定)输出显示详细的状态信息
--socket-buffer-size 指定 TCP 的 RECV 大小,默认为 2097152 即 2 MB
--threads 指定消费的线程数,默认为 10
--timeout 指定允许的最大超时时间,即每条消息返回的最大时间间隔,默认为 10000 即 10 秒
***************************输出参数解释***************************
time:当前时间,格式由 --date-format 指定
threadId:线程 ID
data.consumed.in.MB:消费到的数据总大小,单位为 MB
MB.sec:消费 TPS,即每秒消费的消息大小
data.consumed.in.nMsg:消费到的总消息数
nMsg.sec:消费 TPS,即每秒消费的消息条数
rebalance.time.ms:消费者组重平衡的耗时,单位为 ms,0 表示没有发生重平衡
fetch.time.ms:fetch 线程的总耗时,单位为 ms
fetch.MB.sec:fetch 线程每秒钟获取到的消息大小
fetch.nMsg.sec:fetch 线程每秒钟获取到的消息数量
#若没有指定 --show-detailed,则输出信息中的前两项会有所不同,如下:
start.time, end.time, data.consumed.in.MB, MB.sec, ...
start.time:消费开始的时间,格式由 --date-format 指定
end.time:消费结束的时间,格式由 --date-format 指定
5、类执行命令
通过kafka-run-class命令执行指定类
#查看消费者消费进度
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic my-topic
my-topic:0:12345
my-topic:1:23456
my-topic:2:34567