2022-08-05 Kafka Shell操作

一、Kafka提供的shell操作命令

下面只列出常用选项,其他选项请参考官方文档

1. kafka-topics.sh

(1) 语法

kafka-topics.sh --bootstrap-server host1:port1,... --(list|describe|create|alter|delete) [--可选选项]

(2) 必要选项

选项名描述
bootstrap-server host1:prot1,...指定kafkaServer的连接地址,如果要指定多台kafkaServer的连接地址,使用逗号(,)分割
list列出已创建的topic列表
describe显示某个topic的详细信息,列出的信息中值得注意的是Replicas和ISR,Replicas是当前分区的副本列表,排在第一个的副本就是当前分区的Leader,如果当前Leader挂掉的话,会按照顺序选择后面一个位于ISR中的副本作为新的Leader;ISR是当前分区能够在指定时间同步数据的broker.id列表。
create创建topic
alter修改topic的属性(例如:增加分区数,不能减少分区数)
delete删除topic

(3) 可选选项

选项名描述
topic topic_name指定(要删除/创建/查看详细信息的)topic
replication-factor intNum指定(要创建的)topic中每个分区的副本数量
partitions intNum指定(要创建/更改的)topic中分区的数量

2. kafka-console-producer.sh

(1) 语法

kafka-console-producer.sh --broker-list host1:prot1,... --topic topic-name

(2) 选项

选项名描述
broker-list host1:prot1,...指定kafkaServer的连接地址,如果要指定多台kafkaServer的连接地址,使用逗号(,)分割
topic topic-name指定生产的消息发往哪一个topic

3. kafka-console-consumer.sh

如果不指定消费者组,每次启动一个消费者消费时,都会新建一个消费者组(当前消费者属于该消费者组)。

消费者组可以同时消费多个Topic;

(1) 语法

kafka-console-consumer.sh --bootstrap-server host1:port1,... --topic topic-name [--可选选项]

(2) 必要选项

选项名描述
bootstrap-serverr host1:port1,...指定kafkaServer的连接地址,如果要指定多台kafkaServer的连接地址,使用逗号(,)分割
topic topic-name指定从哪一个topic中消费消息

(3) 可选选项

选项名描述
from-beginning如果要消费的topic中已经存在数据,且当前消费者属于一个新的消费者组,即当前消费者组没有在指定topic中的消费记录,这个时候,启动的消费者不会从开始消费topic中的消息,而是直接记录该消费者组在指定topic中的消费记录为最末端。
group group-name以指定消费者所属消费者组的方式启动消费者。
consumer.config $KAFKA_HOME/config/consumer.propertiesconsumer.properties文件中有意向配置:group.id,改配置指定消费者启动后所属的消费者组。

二、封装脚本

(1) 脚本文件

# 在~/bin下新建脚本文件名为:kafka-ops.sh
# 该脚本目前只支持kafka-topics.sh、kafka-console-producer.sh、kafka-console-consumer.sh的命令使用
# 有兴趣的可以自行增加支持的命令

# 脚本内容如下
#!/bin/bash
if [[ $# -le 1 ]]
then
	echo 'kafka-ops.sh (topics|producer|consumer) options'
	exit 1
fi

case $1 in
"topics"|"producer"|"consumer")
	declare -A shellName
	shellName[topics]='kafka-topics.sh'
	shellName[producer]='kafka-console-producer.sh'
	shellName[consumer]='kafka-console-consumer.sh'

	declare -A brokersPropertyName
	brokersPropertyName[topics]='--bootstrap-server'
	brokersPropertyName[producer]='--broker-list'
	brokersPropertyName[consumer]='--bootstrap-server'
	kafkaServerPort=$(awk '/listeners=PLAINTEXT:\/\/:/{print $0}' $KAFKA_HOME/config/server.properties | grep -o -E '[0-9]+')
	brokers=""
	connectionString=$(awk -F'=' '/zookeeper\.connect=/{print $2}' $KAFKA_HOME/config/server.properties)
	for host in $(cd /home/$USER/bin;java -cp ZookeeperDataGetter-1.0-jar-with-dependencies.jar com.fig.reader.ZookeeperDataReader $connectionString /brokers/ids host)
	do
		brokers=${brokers}${host}':'${kafkaServerPort}','
	done
	brokers=$(echo $brokers | grep -E -o '.+[^,]{1}')
	options="$*"
	options=$(echo ${options#* })
	${shellName[$1]} ${brokersPropertyName[$1]} $brokers $options
;;
*)
	echo 'kafka-ops.sh (topics|producer|consumer) options'
	exit 1
;;
esac

# 保存退出、赋予执行权限
chmod +x ~/bin/kafka-ops.sh

(2) 使用方式

kafka-ops.sh (topics|producer|consumer) options


# 例如
kafka-ops.sh topics --create --topic first --partitions 3 --replication-factor 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值