Kafka 集群管理
后台和停止kafka服务
注意事项: 生产环境推荐使用-daemon
参数后台启动kafka,然后搭配使用nohup
和&
如果不想使用kafka-server-stop.sh
关闭一台机器上的所有kafka broker,还可以使用另一种方式,首先jps
查看kafka的pid,然后运行ps ax | grep -i 'kafka/Kafka' | grep java | grep -v grep | awk '${print $1}'
自行寻找Kafka的PID ,最后运行kill -s TERM $PID
关闭broker。
Topic管理/命令行脚本
创建topic
- 自动分区分配
bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 6 --replication-factor 3
--topic topic-manager-test --config delete.retention.ms=259200000
最后一个参数是日志存留天数3天
- 手动分配分区
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic-manager-test2 --replica-assignment 0:1,1:2,0:2,1:2
假设有三个broker的集群,序号为0,1,2 ,4个分区,2个副本 ,通过replica-assignment指定
删除topic
bin/kafka-topics.sh --delete -zookeeper localhost:2181 --topic topic-manager-test
Topic topic-manager-test is marked for deletion.
|
需要设置delete.topic.enable=true才会真正删除,这里只是打上删除标记
查询topic列表
bin/kafka-topics.sh --zookeeper localhost:2181 --list
查询topic详情
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic topic-manager-test2
Topic:topic-manager-test2 PartitionCount:4 ReplicationFactor:2 Configs:
|
使用kafka-configs.sh脚本查看
bin/kafka-configs.sh --describe --zookeeper localhost:2181 --entity-type topics --entity-name topic-manager-test2
查看所有的主题详细信息
bin/kafka-topics.sh --zookeeper localhost:2181 --describe
修改toipc
kafka允许用户对topic的某些参数如分区数,副本因子和topic级别的参数进行设置
- 增加topic分区, 从4个分区到10个
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic topic-manager-test2
不支持减少分区
- 推荐使用
kafka-configs.sh
配置,下面是在topic参数添加cleanup.policy=compact
配置
bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics
--entity-name topic-manager-test2 --add-config cleanup.policy=compact
- 确认参数是否成功
bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type topics --entity-name topic-manager-test2
删除topic配置
bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name topic-manager-test2 --delete-config prealloocate
附录
- 常见的topic级别的参数和含义
参数名 | 参数含义 |
---|---|
cleanup.policy | topic的留存策略 |
compression.type | 指定topic的压缩类型 |
max.message.bytes | broker能够接收该topic消息的最大长度 |
min.insync.replicas | 指定ISR中需要接收topic消息的最少的broker数,与producer端的acks=1配合使用 |
preallocate | 是否为该topic日志文件提前分配存储空间 |
retention.ms | 指定持有该topic单个分区消息的最长时间 |
segment.bytes | 指定topic日志段文件的大小 |
unclean.leader.election.enable | 是否为topic启用unclean选举 |
开启JMX端口的方法
为了实时监控kafka的健康程度,需要开启JMX端口
前台启动broker: JMX_PORT=9997 bin/kafka-server-start.sh config/server.properties
后台启动broker: export JMX_PORT=9997 bin/kafka-server-start.sh -daemon config/server.properties