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


posted @ 2021-05-20 18:35  zhanglw  阅读(370)  评论(0)    收藏  举报