kafka 操作命令
kafka 命令都在 bin/ 目录下,在命令行中 输入命令时,如果没有加参数 ,会打印出 详细描述。
kafka server
启动 server 需要 先启动 zookeeper
并在 config/server.properties 做好相关配置
# 一般启动
bin/kafka-server-start.sh config/server.properties
# 以守护进程启动 kafka
bin/kafka-server-start.sh -daemon config/server.properties
# 后台启动
nohup bin/kafka-server-start.sh config/server.properties &
nohup bin/kafka-server-start.sh config/server.properties >kafka.log 2>&1 &
# 查看是否启动
> jps
12721 Kafka
25890 QuorumPeerMain # zookeeper 程序
9172 Bootstrap
9060 ZooKeeperMain
9694 Jps
# 关闭 server, 先关闭 kafka ,后关zookeeper
bin/kafka-server-stop.sh
主题 topic
## 创建主题
# --bootstrap-server kafka主机地址 localhost:9092, 192.168.20.10:9092
# --topic 主题名称,不能和已有的主题名重复,否则报 主题已存在 异常
# --partitions 分区数 分区数影响 最大并行消费者数。可选,默认为1. 每个分区日志都在 kafka的 数据日志 目录下,分区名:topicname-id 主题名-分区id,名字不超过255个字符
# --replication-factor 副本数 ,可选,默认为 1
# --config x=y 主题相关的配置 ,可选,覆盖默认设置,x,y相当于 key, value
bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 20 --replication-factor 3 --config x=y
## 主题详情
> bin/kafka-topics.sh --describe --topic my_topic_name --bootstrap-server localhost:9092
Topic:quickstart-events PartitionCount:1 ReplicationFactor:1 Configs:
Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0
## 删除主题
bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic my_topic_name
## 查看kafka topic列表,使用--list参数 ,使用 --bootstrap-server broker_host:port 也可
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
__consumer_offsets
lx_test_topic
test
启动生产者 producer
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic_name
This is a message
This is another message
启动消费者 consumer
# --from-beginning 从头开始消费,可选
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my_topic_name --from-beginning
This is a message
This is another message
重新设置主题分区数
# 分区数只能 变大,不能变小
# 添加分区不能改变现有的数据,如果分区被使用中,这就可能会扰乱消费者。也就是说如果数据通过哈希(key) % number_of_partitions划分,那么该分区将通过添加分区进行洗牌,但kafka不以任何方式自动分配数据。
bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic my_topic_name --partitions 40
增加主题配置
bin/kafka-configs.sh --bootstrap-server broker_host:port --entity-type topics --entity-name my_topic_name --alter --add-config x=y
删除主题配置
bin/kafka-configs.sh --bootstrap-server broker_host:port --entity-type topics --entity-name my_topic_name --alter --delete-config x
检查消费者组的消费情况
## 0.9+
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group test-consumer-group
## 0.10+
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
myGroup testTopic 0 5 5 0 - - -
列出所有消费者组
#
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
test-consumer-group
消费者组详情描述
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
topic3 0 241019 395308 154289 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
topic2 1 520678 803288 282610 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
topic3 1 241018 398817 157799 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
topic1 0 854144 855809 1665 consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1 consumer1
topic2 0 460537 803290 342753 consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1 consumer1
topic3 2 243655 398812 155157 consumer4-117fe4d3-c6c1-4178-8ee9-eb4a3954bee0 /127.0.0.1 consumer4
--describe 后面可以接很多命令
## 此选项提供使用者组中所有活动成员的列表。
--members
##除了“--members”展示信息之外,此选项还展示分配给每个成员的分区。
--members --verbose
##默认的describe选项,与“--describe”选项相同的输出
--offsets
##此选项提供有用的组级别信息
--state
##手动删除一个或多个消费者组
###用户组可以手动删除,也可以在该组最后提交的偏移量过期时自动删除。只有当组没有任何活跃成员时,手动删除才有效
--delete
#列出消费者组中所有活动的成员,及分区
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members --verbose
CONSUMER-ID HOST CLIENT-ID #PARTITIONS ASSIGNMENT
consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1 consumer1 2 topic1(0), topic2(0)
consumer4-117fe4d3-c6c1-4178-8ee9-eb4a3954bee0 /127.0.0.1 consumer4 1 topic3(2)
consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2 3 topic2(1), topic3(0,1)
consumer3-ecea43e4-1f01-479f-8349-f9130b75d8ee /127.0.0.1 consumer3 0 -
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --state
COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS
localhost:9092 (0) range Stable 4
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group my-group --group my-other-group
Deletion of requested consumer groups ('my-group', 'my-other-group') was successful.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group my-group --group my-other-group
Deletion of requested consumer groups ('my-group', 'my-other-group') was successful.
重置消费者组的 offset
要重置消费者组的offset,可以使用“--reset-offsets”选项。此选项同一时间只支持一个消费者组操作。
它需要定义以下范围:--all-topics 或 --topic。 除非您使用"--from-file"方案,否则必须选择一个范围。
另外,首先请确保消费者实例处于非活动状态
它有3个执行操作命令选项:
- 默认会显示要重置的offset
- --execute:执行--reset-offsets处理
- --export:将结果导出为CSV格式。
--reset-offsets 还具有以下场景可供选择(必须选择至少一个场景):
- --to-datetime :将offset重置为与日期时间的offset。 格式:'YYYY-MM-DDTHH:mm:SS.sss'
- --to-earliest : 将offset重置为最早的offset。
- --to-latest : 将offsets重置为最新的offsets。
- --shift-by : 重置offsets,通过移位“n”,其中“ n”可以为正或负。
- --from-file : 将offset重置为CSV文件中定义的值。
- --to-current : 将offset重置为当前的offset。
- --by-duration <String: duration> : 将offset重置为从当前时间戳开始一定持续时间段的时间。格式:“ PnDTnHnMnS”
- --to-offset : 将offset重置为指定的 offset。
请注意,超出范围的offset将调整为可用的offset的尾部。例如,如果offset最大为10,设置为15时,则实际上offset将为10。
#将消费者组的offset重置为最新的offset
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --group consumergroup1 --topic topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0

浙公网安备 33010602011771号