Kafka使用时命令过于繁冗,此脚本用于Kafka的便捷使用
bigdata为主机名
使用时仅需修改bigdata为你的主机名,确保本机Kafka可以正常使用即可
#!/bin/bash
while true; do
# 命令大全系统界面
echo "Kafka 命令大全系统:"
echo "1. 主题操作(topics)"
echo "2. 生产者操作(producer)"
echo "3. 消费者操作(consumer)"
echo "4. 配置操作(configs)"
echo "5. 消费者组操作(consumer groups)"
echo "6. 生产者性能测试(producer perf test)"
echo "7. 消费者性能测试(consumer perf test)"
echo "0. 退出"
read -p "请输入功能选项数字:" choice
case $choice in
1)
# 主题操作菜单
while true; do
echo "主题操作功能:"
echo "1. 查看所有主题"
echo "2. 创建主题"
echo "3. 查看某主题详细信息"
echo "4. 修改某主题分区数"
echo "5. 删除主题"
echo "0.返回命令大全系统界面"
read -p "请输入主题操作选项数字:" topic_choice
case $topic_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
;;
2)
# 创建主题
read -p "请输入要创建的主题名称:" topic_name
while true; do
read -p "请输入分区数(整数):" partitions
if [[ $partitions =~ ^[0-9]+$ ]]; then
break
else
echo "分区数必须是整数,请重新输入。"
fi
done
while true; do
read -p "请输入副本数(整数,且不超过可用 broker 数量):" replication_factor
if [[ $replication_factor =~ ^[0-9]+$ ]]; then
# 这里可添加检查副本数不超过可用 broker 数量的逻辑,暂时省略
break
else
echo "副本数必须是整数,请重新输入。"
fi
done
kafka-topics.sh --bootstrap-server bigdata:9092 --create --partitions $partitions --replication-factor $replication_factor --topic $topic_name
;;
3)
# 查看某主题详细信息
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要查看详细信息的主题名称:" topic_to_describe
kafka-topics.sh --bootstrap-server bigdata:9092 --describe --topic $topic_to_describe
;;
4)
# 修改某主题分区数
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要修改分区数的主题名称:" topic_to_alter
while true; do
read -p "请输入新的分区数(整数且大于当前分区数):" new_partitions
if [[ $new_partitions =~ ^[0-9]+$ ]]; then
# 这里可添加检查新分区数是否大于当前分区数的逻辑,暂时省略
break
else
echo "新分区数必须是整数,请重新输入。"
fi
done
kafka-topics.sh --bootstrap-server bigdata:9092 --alter --topic $topic_to_alter --partitions $new_partitions
;;
5)
# 删除主题
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要删除的主题名称:" topic_to_delete
kafka-topics.sh --bootstrap-server bigdata:9092 --delete --topic $topic_to_delete
;;
0)
break
;;
*)
echo "无效的主题操作选择。"
;;
esac
done
;;
2)
# 生产者操作菜单
while true; do
echo "生产者操作功能:"
echo "1. 发送消息到指定主题"
echo "0.返回命令大全系统界面"
read -p "请输入生产者操作选项数字:" producer_choice
case $producer_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要发送消息的主题名称:" topic_name
echo "开始发送消息到主题 $topic_name。输入'EXIT'退出发送。"
while true; do
read -p "请输入消息内容:" message
if [ "$message" = "EXIT" ]; then
break
fi
kafka-console-producer.sh --bootstrap-server bigdata:9092 --topic $topic_name <<< "$message"
done
;;
0)
break
;;
*)
echo "无效的生产者操作选择。"
;;
esac
done
;;
3)
# 消费者操作菜单
while true; do
echo "消费者操作功能:"
echo "1. 消费指定主题的消息"
echo "2. 从主题开头消费所有消息"
echo "0.返回命令大全系统界面"
read -p "请输入消费者操作选项数字:" consumer_choice
case $consumer_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要消费消息的主题名称:" topic_name
kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic $topic_name
;;
2)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要从开头消费消息的主题名称:" topic_name
kafka-console-consumer.sh --bootstrap-server bigdata:9092 --from-beginning --topic $topic_name
;;
0)
break
;;
*)
echo "无效的消费者操作选择。"
;;
esac
done
;;
4)
# 配置操作菜单
while true; do
echo "配置操作功能:"
echo "1. 查看主题配置"
echo "2. 修改主题配置"
echo "0.返回命令大全系统界面"
read -p "请输入配置操作选项数字:" config_choice
case $config_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要查看配置的主题名称:" topic_name
kafka-configs.sh --bootstrap-server bigdata:9092 --describe --entity-type topics --entity-name $topic_name
;;
2)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要修改配置的主题名称:" topic_name
read -p "请输入配置项名称:" config_name
read -p "请输入配置项值:" config_value
kafka-configs.sh --bootstrap-server bigdata:9092 --alter --entity-type topics --entity-name $topic_name --add-config $config_name=$config_value
;;
0)
break
;;
*)
echo "无效的配置操作选择。"
;;
esac
done
;;
5)
# 消费者组操作菜单
while true; do
echo "消费者组操作功能:"
echo "1. 查看消费者组列表"
echo "2. 查看消费者组详情"
echo "3. 重置消费者组偏移量"
echo "0.返回命令大全系统界面"
read -p "请输入消费者组操作选项数字:" consumer_group_choice
case $consumer_group_choice in
1)
kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --list
;;
2)
read -p "请输入要查看详情的消费者组名称:" group_name
kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --describe --group $group_name
;;
3)
read -p "请输入要重置偏移量的消费者组名称:" group_name
read -p "请输入要重置偏移量的主题名称:" topic_name
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --reset-offsets --group $group_name --topic $topic_name --to-earliest
;;
0)
break
;;
*)
echo "无效的消费者组操作选择。"
;;
esac
done
;;
6)
# 生产者性能测试菜单
while true; do
echo "生产者性能测试功能:"
echo "1. 执行生产者性能测试"
echo "2. 查看可用主题列表"
echo "0.返回命令大全系统界面"
read -p "请输入生产者性能测试选项数字:" producer_perf_choice
case $producer_perf_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要测试的主题名称:" topic_name
existing_topics=$(kafka-topics.sh --bootstrap-server bigdata:9092 --list)
if echo "$existing_topics" | grep -q "$topic_name"; then
while true; do
read -p "请输入要发送的记录数量(整数):" num_records
if [[ $num_records =~ ^[0-9]+$ ]]; then
break
else
echo "记录数量必须是整数,请重新输入。"
fi
done
while true; do
read -p "请输入每条记录的大小(整数,单位字节):" record_size
if [[ $record_size =~ ^[0-9]+$ ]]; then
break
else
echo "记录大小必须是整数,请重新输入。"
fi
done
kafka-producer-perf-test.sh --topic $topic_name --num-records $num_records --record-size $record_size --throughput -1 --producer-props bootstrap.servers=bigdata:9092
else
echo "主题 $topic_name 不存在,请重新输入。"
fi
;;
2)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
;;
0)
break
;;
*)
echo "无效的生产者性能测试选择。"
;;
esac
done
;;
7)
# 消费者性能测试菜单
while true; do
echo "消费者性能测试功能:"
echo "1. 执行消费者性能测试"
echo "2. 查看可用主题列表"
echo "0.返回命令大全系统界面"
read -p "请输入消费者性能测试选项数字:" consumer_perf_choice
case $consumer_perf_choice in
1)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
echo "当前可用主题列表如下:"
read -p "请输入要测试的主题名称:" topic_name
existing_topics=$(kafka-topics.sh --bootstrap-server bigdata:9092 --list)
if echo "$existing_topics" | grep -q "$topic_name"; then
kafka-consumer-perf-test.sh --broker-list bigdata:9092 --topic $topic_name --messages 100000
else
echo "主题 $topic_name 不存在,请重新输入。"
fi
;;
2)
kafka-topics.sh --bootstrap-server bigdata:9092 --list
;;
0)
break
;;
*)
echo "无效的消费者性能测试选择。"
;;
esac
done
;;
0)
echo "退出脚本。"
break
;;
*)
echo "无效的选择。"
;;
esac
done