kafka总结-常用命令

启动zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties &

启动kafka:

bin/kafka-server-start.sh config/server.properties

这样启动又一个坏处,就是kafka启动完毕之后,不能关闭终端,为此,我们可以运行这条命令:

nohup bin/kafka-server-start.sh config/server.properties >  /dev/null 2>&1 &

多个kafka的话,在各个虚拟机上运行kafka启动命令多次即可。

当然这个是单机的命令,集群的命令后面再讲。

 

查看是否启动

jps -lm

说明没有启动kfka

说明启动kafka了

 

查看kafka版本

find ./libs/ -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'

kafka_2.12-2.4.1.jar

结果:

就可以看到kafka的具体版本了。

其中,2.12为scala版本,2.4.1为kafka版本。

停止kafka

bin/kafka-server-stop.sh

停止zookeeper

bin/zookeeper-server-stop.sh

创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

 

多集群创建,执行这个需要搭建多机器的kafka集群环境,zkq1/zkq2/zkq3分别代表了3台zookeeper集群的三台机器

/bin/kafka-topics.sh —create —zookeeper zkq1:2181,zkq2:2181,zkq3:2181 -replication-factor 6 —partition 6 —topic test

 

解释:

--topic后面的test0是topic的名称

--zookeeper应该和server.properties文件中的zookeeper.connect一样

--config指定当前topic上有效的参数值

--partitions指定topic的partition数量,如果不指定该数量,默认是server.properties文件中的num.partitions配置值

--replication-factor指定每个partition的副本个数,默认是1个

 

也可以向没有的topic发送消息的时候创建topic

需要

开启自动创建配置:auto.create.topics.enable=true

使用程序直接往kafka中相应的topic发送数据,如果topic不存在就会按默认配置进行创建。

展示topic

bin/kafka-topics.sh --list --zookeeper localhost:2181

描述topic

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

解释:

要查看多个topic用逗号分割

leader:

是该partitons所在的所有broker中担任leader的broker id,每个broker都有可能成为leader,负责处理消息的读和写,leader是从所有节点中随机选择的.

-1表示此broker移除了

 

Replicas:

显示该partiton所有副本所在的broker列表,包括leader,不管该broker是否是存活,不管是否和leader保持了同步。列出了所有的副本节点,不管节点是否在服务中.

 

Isr:

in-sync replicas的简写,表示存活且副本都已同步的的broker集合,是replicas的子集,是正在服务中的节点.

 

举例:

比如上面结果的第一行:Topic: test0  Partition:0    Leader: 0       Replicas: 0,2,1 Isr: 1,0,2

Partition: 0[该partition编号是0]

Replicas: 0,2,1[代表partition0 在broker0,broker1,broker2上保存了副本]

Isr: 1,0,2 [代表broker0,broker1,broker2都存活而且目前都和leader保持同步]

Leader: 0

代表保存在broker0,broker1,broker2上的这三个副本中,leader是broker0

leader负责读写,broker1、broker2负责从broker0同步信息,平时没他俩什么事

查看topic的partition及增加partition

/kafka-topics.sh –zookeeper 10.2.1.1:2181 –topic mcc-logs –describe 

 

删除Topic

/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test

 

如果你的server.properties内没有配置相关的配置的话,会出现如下错误:

Topic test is marked for deletion.

Note: This will have no impact if delete.topic.enable is not set to true.

这边是说,你的Topic已经被标记为待删除的Topic,但是呢,你配置文件的开关没有打开,所以只是给它添加了一个标记,实际上,这个Topic并没有被删除。只有,你打开开关之后,会自动删除被标记删除的Topic。

 

解决办法:

设置server.properties文件内的“delete.topic.enable=true”,并且重启Kafka就可以了。

 

如果不想修改配置也可以完全删除

1、删除kafka存储目录(server.propertiewenjian log.dirs配置,默认为“/tmp/kafka-logs”)下对应的topic。(不同broker下存储的topic不一定相同,所有broker都要看一下)

 

2、进入zookeeper客户端删掉对应topic

        zkCli.sh  -server 127.0.0.1:42182

 

   找到topic目录:

        ls   /brokers/topics

 

   删掉对应topic

    rmr  /brokers/topic/topic-name

 

   找到目录:

        ls    /config/topics

 

   删掉对应topic

        rmr  /config/topics/topic-name  

这样就完全删除了

删除topic中存储的内容

在config/server.properties中找到如下的位置

删除log.dirs指定的文件目录,

登录zookeeper client。

命令:

/home/ZooKeeper/bin/zkCli.sh

删除zookeeper中该topic相关的目录

 

命令:

rm -r /kafka/config/topics/test0

rm -r /kafka/brokers/topics/test0

rm -r /kafka/admin/delete_topics/test0 (topic被标记为marked for deletion时需要这个命令)

重启zookeeper和broker

 

生产者发送消息:

bin/kafka-console-producer.sh --broker-list 130.51.23.95:9092 --topic my-replicated-topic

这里的ip和端口是broker的ip及端口,根据自己kafka机器的ip和端口写就可以

消费者消费消息:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --new-consumer --from-beginning --consumer.config config/consumer.properties

 

查看topic某分区偏移量最大(小)值

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic hive-mdatabase-hostsltable  --time -1 --broker-list node86:9092 --partitions 0

 

注: time为-1时表示最大值,time为-2时表示最小值

不指定--partitions 就是指这个topic整体的情况

查看指定group的消费情况

kafka-consumer-groups.sh --bootstrap-server 172.20.72.93:9092 --describe --group mygroup

运行结果:

  • GROUP:消费者组
  • TOPIC:topic名字
  • PARTITION :partition id
  • CURRENT-OFFSET:  当前消费到的offset                
  • LOG-END-OFFSETSIZE :最新的offset
  •  LAG:未消费的条数
  • CONSUMER-ID:消费者组中消费者的id,为—代表没有active的消费者
  • HOST:消费者的机器ip,为—代表没有active的消费者
  • CLIENT-ID:消费者clientID,为—代表没有active的消费者

 查看所有group的消费情况

kafka-consumer-groups.sh --bootstrap-server 172.20.72.93:9092 --all-groups --all-topics --describe

 

修改group消费的offset

kafka-consumer-groups.sh --bootstrap-server 172.20.72.93:9092 --group mygroup --reset-offsets --topic mytopic --to-offset 61 --execute

上面就是把mygroup在mytopic的消费offset修改到了61

重设位移有几种选项:
--to-earliest:   设置到最早位移处,也就是0
--to-latest:     设置到最新处,也就是主题分区HW的位置
--to-offset NUM: 指定具体的位移位置
--shift-by NUM:  基于当前位移向前回退多少
--by-duration:   回退到多长时间
 

查看指定group中活跃的消费者

kafka-consumer-groups.sh --bootstrap-server 172.20.72.93:9092 --describe --group mygroup --members
 

增加topic分区数

(只能增加不能减少)

为topic t_cdr 增加10个分区

bin/kafka-topics.sh --zookeeper node01:2181  --alter --topic t_cdr --partitions 10

 

posted @ 2022-08-12 16:15  星光闪闪  阅读(1040)  评论(0)    收藏  举报