当前位置:   article > 正文

Kafka常用命令_kafka-run-class.sh

kafka-run-class.sh

KafkaServer管理:

kafka运行依赖于zookeeper,在kafka启动之前,首先要保证zookeeper已正常启动。zookeeper可单独部署或者使用kafka自带的zookeeper操作的相应脚本。
启动zookeeper(使用kafka自带脚本):

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
  • 1

启动单个kafka节点:

nohup bin/kafka-server-start.sh config/server.properties &
  • 1

kafka没有提供同时启动集群中所有节点的脚本(可以自己根据使用需求,使用ssh进行封装),需要分别在集群其他主机上运行此命令,启动kafkaserver,启动之后可以登录zookeeper客户端查看相应节点信息。
关闭单个kafka节点:

bin/kafka-server-stop.sh
  • 1

同样,kafka没有提供关闭集群操作的脚本(可以自己根据使用需求,使用ssh进行封装),需要分别在集群其他主机上运行此命令。

主题管理:

kafka提供了一个kafka-topics.sh工具脚本,用于对主题相关的操作,如创建主题、删除主题、修改主题分区数和副本数、查看主题信息等操作。
此脚本核心代码仅1行:

exec $(dirname $0)/kafka-run-class.sh kafka.admin.TopicCommand "$@"
  • 1

运行kafka-run-class.sh脚本,调用kafka.admin.TopicCommand类,同时接受一个操作指令,该指令包括:

--create   创建topic
--alter		 修改topic
--list     列举topic
--describe 描述topic
--delete	 删除topic
  • 1
  • 2
  • 3
  • 4
  • 5

创建主题:
命令示例:创建一个名为renmy的主题,该主题有1个分区,1个副本因子

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

其中:
–create表示此次操作为创建主题
–zookeeper localhost:2181 设置zookeeper集群地址(按自己实际环境修改)
–topic renmy 设置主题名字为
–partitions 1 设置主题分区数
–replication-factor 1 设置主题副本因子(副本数不能大于kafka节点数)
在创建主题时,还可以使用config参数来设置主题级别的配置以覆盖默认配置,可以设置多组配置具体格式为:
–config config1-name=config1-value --config config2-name=config2-value
创建一个名为renmy1的主题,该主题有3个分区,1个副本因子,并设置max.message.bytes为404800字节,执行如下命令:

	./kafka-topics.sh --create --zookeeper localhost:2181 --topic renmy1 --partitions 3 --replication-factor 1 --config max.message.bytes=404800
  • 1

删除主题:
删除kafka主题有两种方式:
(1)手动删除各节点{log.dir}目录下该主题分区文件夹,同时,登录zookeeper客户端删除待删除主题对应的节点,主题元素保存在/brokers/topics和/config/topics目录下
(2)执行kafka-topics.sh脚本进行删除,希望通过此脚本彻底删除主题,则需要保证在启动kafka时,加载的server.properties文件中配置delete.topic.enable=ture,该配置默认配置为false
否则执行该脚本并未真正删除主题,而是在zookeeper的/admin/delete_topics目录下创建一个与待删除主题同名的节点,将该主题标记为删除状态。
使用命令如下:

./kafka-topics.sh --delete --zookeeper localhost:2181 --topic renmy
  • 1

查看主题:
kafka提供了list和describe两个命令方便查看主题信息,其中list参数列出kafka所有的主题名,describe参数可以查看所有或者某个主题的信息
查看主题列表:

./kafka-topics.sh --list --zookeeper localhost:2181
  • 1

查看某一主题:

./kafka-topics.sh --zookeeper localhost:2181 --describe --topic renmy1
  • 1

从输出结果可以看到,已按主题分组展示,每组主题信息中第一行分别展示了主题名、该主题分区总数、该主题副本总数、创建主题时设置的config参数。

从第二行开始,按主题分区编号进行排序,展示每个分区的leader副本节点,副本列表AR及ISR信息。
查看正在同步的主题:

./kafka-topics.sh --zookeeper localhost:2181 --describe --under-replicated-partitions
  • 1

查看没有leader的分区

./kafka-topics.sh --zookeeper localhost:2181 --describe --unavailable-partitions
  • 1

查看主题覆盖配置:

./kafka-topics.sh --zookeeper localhost:2181 --describe --topics-with-overrides
  • 1

修改主题:
当创建一个主题之后,可以使用alter命令对主题进行修改,包括修改主题级别的配置、增加主题分区、修改副本分配方案、修改主题offset等
修改主题,增加分区
./kafka-topics.sh --alter --zookeeper localhost:2181 --topic renmy --partitions 3

修改主题级别配置
老版本方法:(在新kafka版本中此方法将会被弃用)
修改max.message.bytes值为204800
  • 1
  • 2
  • 3
./kafka-topics.sh --alter --zookeeper localhost:2181 --topic renmy --config max.message.bytes=204800
  • 1

删除max.message.bytes配置使其恢复默认值

./kafka-topics.sh --alter --zookeeper localhost:2181 --topic renmy --delete-config max.message.bytes
  • 1

新版本方法:
修改max.message.bytes值为204800(多个参数之间用","分隔)

./kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name renmy  --add-config 'max.message.bytes=204800' 
./kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name renmy --delete-config 'max.message.bytes'
  • 1
  • 2

生产者基本操作:

执行生产者操作必须指定–broker-list和–topic,其他参数不指定时,使用默认值
无key型消息:默认情况下,所生产的消息是没有 key 的,直接输入消息值即可(value)
注意:有些版本–bootstrap-server 需要改为 --broker-list

./kafka-console-producer.sh --bootstrap-server 192.168.49.128:9092 --topic renmy
  • 1

有key型消息:默认消息键与消息值间使用“Tab键”进行分隔,切勿使用转义字符(\t)

./kafka-console-producer.sh --bootstrap-server 192.168.206.128:9092 --topic renmy --property parse.key=true
  • 1

修改分隔符为空格

./kafka-console-producer.sh --bootstrap-server 192.168.206.128:9092 --topic renmy --property parse.key=true --property key.separator=' '
  • 1

消费者基本操作:

从头开始接收消息:

./kafka-console-consumer.sh --bootstrap-server 192.168.49.128:9092 --from-beginning --topic renmy
  • 1

从最新offset开始消费(不消费之前消息)

./kafka-console-consumer.sh --bootstrap-server 192.168.206.128:9092 --topic renmy
  • 1

指定group_id消费:

./kafka-console-consumer.sh --bootstrap-server 192.168.206.128:9092 --group test_id --topic renmy
  • 1

显示key消费:

./kafka-console-consumer.sh --bootstrap-server 192.168.206.128:9092 --property print.key=true --topic renmy
  • 1

指定分区消费可使用参数:–partition,除非指定’–offset’,否则从分区结束(latest)开始消费
示例:消费renmy主题中的0分区所有消息

./kafka-console-consumer.sh --bootstrap-server 192.168.206.128:9092 --from-beginning --topic renmy --partition 0	
  • 1

指定offset位置开始消费(必须指定分区)

./kafka-console-consumer.sh --bootstrap-server 192.168.206.128:9092 --offset 2 --partition 0 --topic renmy
  • 1

显示所有group_id:

./kafka-consumer-groups.sh --bootstrap-server 192.168.49.128:9092 --list
  • 1

显示指定group_id消费情况:

./kafka-consumer-groups.sh --bootstrap-server 192.168.49.128:9092 --group console-consumer-91163 --describe
  • 1

显示解释:
•TOPIC:该group里消费的topic名称
•PARTITION:分区编号
•CURRENT-OFFSET:该分区当前消费到的offset
•LOG-END-OFFSET:该分区当前latest offset
•LAG:消费滞后区间,为LOG-END-OFFSET - CURRENT-OFFSET,具体大小需要看应用消费速度和生产者速度,
一般过大则可能出现消费跟不上,需要引起应用注意
•CONSUMER-ID:server端给该分区分配的consumer编号
•HOST:消费者所在主机
•CLIENT-ID:消费者id,一般由应用指定

查看主题Offset

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.49.128:9092 --topic renmy
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/936711
推荐阅读
相关标签
  

闽ICP备14008679号