kafka安装目录下的bin目录包含了很多运维可操作的shell脚本,列举如下:
脚本名称 | 用途描述 |
---|---|
connect-distributed.sh | 连接kafka集群模式 |
connect-standalone.sh | 连接kafka单机模式 |
kafka-acls.sh | todo |
kafka-broker-api-versions.sh | todo |
kafka-configs.sh | 配置管理脚本 |
kafka-console-consumer.sh | kafka消费者控制台 |
kafka-console-producer.sh | kafka生产者控制台 |
kafka-consumer-groups.sh | kafka消费者组相关信息 |
kafka-consumer-perf-test.sh | kafka消费者性能测试脚本 |
kafka-delegation-tokens.sh | todo |
kafka-delete-records.sh | 删除低水位的日志文件 |
kafka-log-dirs.sh | kafka消息日志目录信息 |
kafka-mirror-maker.sh | 不同数据中心kafka集群复制工具 |
kafka-preferred-replica-election.sh | 触发preferred replica选举 |
kafka-producer-perf-test.sh | kafka生产者性能测试脚本 |
kafka-reassign-partitions.sh | 分区重分配脚本 |
kafka-replay-log-producer.sh | todo |
kafka-replica-verification.sh | 复制进度验证脚本 |
kafka-run-class.sh | todo |
kafka-server-start.sh | 启动kafka服务 |
kafka-server-stop.sh | 停止kafka服务 |
kafka-simple-consumer-shell.sh | deprecated,推荐使用kafka-console-consumer.sh |
kafka-streams-application-reset.sh | todo |
kafka-topics.sh | topic管理脚本 |
kafka-verifiable-consumer.sh | 可检验的kafka消费者 |
kafka-verifiable-producer.sh | 可检验的kafka生产者 |
trogdor.sh | todo |
zookeeper-security-migration.sh | todo |
zookeeper-server-start.sh | 启动zk服务 |
zookeeper-server-stop.sh | 停止zk服务 |
zookeeper-shell.sh | zk客户端 |
接下来详细说明每个脚本的使用方法。
- connect-distributed.sh&connect-standalone.sh
Kafka Connect是在0.9以后加入的功能,主要是用来将其他系统的数据导入到Kafka,然后再将Kafka中的数据导出到另外的系统。可以用来做实时数据同步的ETL,数据实时分析处理等。
主要有2种模式:Standalone(单机模式)和Distribute(分布式模式)。
单机主要用来开发,测试,分布式的用于生产环境。
用法比较复杂,建议参考:Kafka Connect教程详解 https://3gods.com/bigdata/Kafka-Connect-Details.html
- kafka-broker-api-versions.sh
用法:bin/kafka-broker-api-versions.sh –bootstrap-server 10.0.55.229:9092,10.0.55.229:9093,10.0.55.229:9094
- kafka-configs.sh
配置管理脚本,这个脚本主要分两类用法:describe和alter。
describe相关用法:
查看每个topic的配置:bin/kafka-configs.sh –zookeeper localhost:2181 –describe –entity-type topics
部分结果如下:
Configs for topic 'afei' are
Configs for topic 'TOPIC-TEST-AFEI' are retention.ms=600000
Configs for topic '__consumer_offsets' are segment.bytes=104857600,cleanup.policy=compact,compression.type=producer
查看broker的配置:bin/kafka-configs.sh –bootstrap-server localhost:9092 –describe –entity-type brokers –entity-name 0
说明:0是broker.id,因为entity-type为brokers,所以entity-name表示broker.id。
alter相关用法:
给指定topic增加配置:bin/kafka-configs.sh –zookeeper localhost:2181 –alter –entity-type topics –entity-name TOPIC-TEST-AFEI –add-config retention.ms=600000
给指定topic删除配置:bin/kafka-configs.sh –zookeeper localhost:2181 –alter –entity-type topics –entity-name TOPIC-TEST-AFEI –delete-config max.message.bytes
通过该脚本可以管理的属性,可以通过执行
bin/kafka-configs.sh
得到的输出中--add-config
的desc可以得到。
- kafka-broker-api-versions.sh
用法:bin/kafka-broker-api-versions.sh –bootstrap-server localhost:9092
- kafka-console-consumer.sh
用法:bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic afei [–group groupName] [–partition 目标分区]
这个命令后面还可带很多参数:
--key-deserializer
:指定key的反序列化方式,默认是 org.apache.kafka.common.serialization.StringDeserializer
--value-deserializer
:指定value的反序列化方式,默认是 org.apache.kafka.common.serialization.StringDeserializer
--from-beginning
:从最早的消息开始消费,默认是从最新消息开始消费。
--offset
: 从指定的消息位置开始消费,如果设置了这个参数,还需要带上--partition
。否则会提示:The partition is required when offset is specified.
--timeout-ms
:当消费者在这个参数指定时间间隔内没有收到消息就会推出,并抛出异常:kafka.consumer.ConsumerTimeoutException。
--whitelist
:接收的topic白名单集合,和--topic
二者取其一。例如:--whitelist "afei.*"
(以afei开头的topic),--whitelist "afei"
(指定afei这个topic),"afei|fly"
(指定afei或者fly这两个topic)。另外一个参数--blacklist
用法类似。
- kafka-console-producer.sh
用法:bin/kafka-console-producer.sh –broker-list localhost:9092 –topic afei
,如果连接集群,那么broker-list参数格式为:HOST1:PORT1,HOST2:PORT2,HOST3:PORT3
这个命令后面还可带很多参数:
--key-serializer
:指定key的序列化方式,默认是 org.apache.kafka.common.serialization.StringSerializer
--value-serializer
:指定value的序列化方式,默认是 org.apache.kafka.common.serialization.StringSerializer
- kafka-consumer-groups.sh
查看所有消费者组:bin/kafka-consumer-groups.sh –bootstrap-server localhost:9092 –list
查看某个消费者组:bin/kafka-consumer-groups.sh –bootstrap-server localhost:9092 –group AfeiGroup –describe,输出结果如下:
Note: This will not show information about old Zookeeper-based consumers.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
afei 0 8 8 0 consumer-1-7a46c647-8221-4aca-b6bf-ed14571fb0f1 /172.18.36.203 consumer-1
afei 4 10 10 0 consumer-1-7a46c647-8221-4aca-b6bf-ed14571fb0f1 /172.18.36.203 consumer-1
afei 1 8 8 0 consumer-1-7a46c647-8221-4aca