Kafka的常用基本操作
##列出所有主题
./kafka-topics.sh --zookeeper s227:2181,s228:2181,s229:2181 --list
##列出所有主题的详细信息
./kafka-topics.sh --zookeeper s227:2181,s228:2181,s229:2181 --describe
##创建主题 主题名 my-topic,1副本,8分区
./kafka-topics.sh --zookeeper s227:2181,s228:2181,s229:2181 --create --replication-factor 1 --partitions 8 --topic my-topic
##增加分区,注意:分区无法被删除
./kafka-topics.sh --zookeeper s227:2181,s228:2181,s229:2181 --alter --topic my-topic --partitions 16
##删除主题
./kafka-topics.sh --zookeeper s227:2181,s228:2181,s229:2181 --delete --topic my-topic
##列出消费者群组
./kafka-topics.sh --new-consumer --bootstrap-server localhost:9092/kafka --list
##列出消费者群组详细信息
./kafka-topics.sh --new-consumer --bootstrap-server localhost:9092/kafka --describe --group 群组名
Broker配置(server.properties)
- broker.id 每个broker的id必须不同,整数
- log.dirs 存放kafka数据 多个以,分割 配置多个充分利用磁盘并行读写能力
- num.recovery.threads.per.data.dir 每个数据目录用于日志启动和关闭时的线程数量,因为这些线程只是服务启动或关闭时才会用到,如果本参数设置为8 log.dirs配置了3个目录,则总共会启动24个线程
- auto.create.topics.enable 自动创建主题 默认为true
- num.partitions 创建分区的默认分区数
- log.retention.hours 日志保存时间 默认168(7天)
- log.retention.bytes topic每个分区的最大文件大小
- log.segment.bytes partition的日志切分成一段一段超过这个数量就会开始创建新的log 默认被删除1G (10天填满1个G + 7天过期=17天)
- log.segment.ms 和上面的一样 只不过是以时间为判断依据
- message.max.bytes 一个broker能够接受的消息最大字节默认为900KB到1MB,producer和consumer必须一致
硬件配置对Kafka性能的配置
磁盘
磁盘吞吐量影响生产者的性能。因为生产者的消息必须被提交到服务器保存,大多数客户端都会一直等待,知道至少有一个服务器确认消息已经成功提交位置,也就是说磁盘写入越快,生成消息的延迟越低
内存
kafka本身不需要太多内存,内存主要影响消费者性能,消费者的消费数据一般会从内存中获取
网络
网络吞吐量决定了kafka能够处理的最大数据流量
cpu
kafka对cpu要求不高,主要在对消费的压缩和解压缩才需要