文章目录
1、常用命令
1.0 启动关闭命令
server.properties在config目录下,要指定
启动:
kafka-server-start.sh -daemon server.properties
#-daemon是后台启动的意思,默认前台阻塞
#server.properties是指定配置文件
关闭:
kafka-server-stop.sh
1.1 查看主题
#查看主题
kafka-topics.sh --zookeeper master01:2181/kafka --list
1.2 创建主题
#创建主题“first”,分区数为3,备份因子为2
kafka-topics.sh --zookeeper master01:2181/kafka --create --topic first --partitions 3 --replication-factor 2
1.3 查看主题的结构描述信息
#查看主题“first”的结构描述信息
kafka-topics.sh --zookeeper master01:2181/kafka --describe --topic first
1.4 进入生产者模式
#生产者模式,生产数据给多个消费者
kafka-console-producer.sh --broker-list master01:9092,master02:9092 --topic first
1.5 进入消费者模式
#消费者模式1,查看生产者发送过来的东西,只看启动生产的数据
#--bootstrap-server:指定kafka服务端,kafka的主机名:端口
kafka-console-consumer.sh --bootstrap-server master01:9092,master02:9092 --topic first
#消费者模式2,查看生产者发送过来的东西,可以看到启动前的数据,从头到尾
kafka-console-consumer.sh --bootstrap-server master01:9092,master02:9092 --topic first --from-beginning
1.6 查看消费者组
#查看消费者组
kafka-consumer-groups.sh --bootstrap-server master01:9092 --list
#console-consumer-71716
#console-consumer-32602
#console-consumer-45272
1.7 查看组详情
#查看组详情
kafka-consumer-groups.sh --bootstrap-server master01:9092 --describe --group console-consumer-????
#输出结果如下:
#GROUP消费者组,TOPIC主题,PARTITION分区,CURRENT-OFFSET当前偏移量,LOG-END-OFFSET下一条将要加入的日志偏移,LAG滞后延时,CONSUMER-ID消费者ID,HOST主机IP,CLIENT-ID客户端
1.8 生产压力测试
#生成压力测试,perf性能
kafka-producer-perf-test.sh --topic first --record-size 1000 --num-records 200000 --throughput -1 --producer-props bootstrap.servers=master01:9092,master02:9092,slave01:9092,slave02:9092
#--topic first 主题
#--record-size 1000 一条消息覆盖的字节
#--num-records 200000 一次性生成多少
#--throughput -1 :定量测延时,不定量测吞吐
#--producer-props 所有的机器
1.9 消费压力测试
#消费压力测试
kafka-consumer-perf-test.sh --topic first --fetch-size 10000 --messages 200000 --threads 1 --broker-list master01:9092,master02:9092,slave01:9092,slave02:9092
1.10 消费者组offset重置
更新到当前group最初的offset位置
kafka-consumer-groups.sh --bootstrap-server single:9092 --group mydemo3 --reset-offsets --all-topics --to-earliest --execute
更新到指定的offset位置
kafka-consumer-groups.sh --bootstrap-server single:9092 --group mydemo3 --reset-offsets --all-topics --to-offset 500000 --execute
更新到当前offset位置(解决offset的异常)
kafka-consumer-groups.sh --bootstrap-server single:9092 --group mydemo3 --reset-offsets --all-topics --to-current --execute
offset位置按设置的值进行位移
kafka-consumer-groups.sh --bootstrap-server single:9092 --group mydemo3 --reset-offsets --all-topics --shift-by -100000 --execute
offset设置到指定时刻开始
kafka-consumer-groups.sh --bootstrap-server single:9092 --group mydemo3 --reset-offsets --all-topics --to-datetime 2021-03-27T14:30:00.000
1.11 游标位置
#命令:查看读取的游标位置
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list single:9092 --topic mydemo3 --time -1
#输出:前面的游标数,后面是总数
mydemo3:0:0
1.12 解析查看日志
kafka-dump-log.sh --files ./00000000000000000000.index
1.13、修改分区数(increase)
kafka-topics.sh --zookeeper hd01:2181/kafka --alter --topic mydemo4 --partitions 3
2、查看目录结构
在kafka当中, 每一个topic会有一个单独文件夹, 在topic下会为每一个分区生成一个单独的文件夹, 将这二者合并命名,topic-分区号
, 例如test-0
, 在每一个分区下又会有多个segment, 既然已经有多个分区了, 为什么要再进行划分为多个segment?
答:①如果只存一个文件中, 文件会越来越大, ②Kafka中的数据默认存储7天, 每一天都会删除7天前的数据, 如果都存在一个文件当中, 会不好删
1.生成测试数据
kafka-producer-perf-test.sh --topic test --num-records 500000 --record-size 1000 --producer-props bootstrap.servers=singleNode:9092 --throughput 1000000000
2.查看index和log文件
kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.log --print-data-log
kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.index --print-data-log
3、开发经验
3.1 kafka节点数量:
2*(峰值生产速度(MB)*副本数量/100)+1
峰值生产速度向客户提取。如果峰值生产速度:50M/s,副本数,2R/p,那么节点数量为2*(50*2/100)+1=3台。一般集群规模10台,则kafka为3~5台
3.2 Topic数量:
一般情况下,每种日志类型一个topic:行为日志一个,RMDBMS一个
3.3 分区数量:
分区数量是测出来的。创建单分区的topic,测producer和consumer的吞吐速度,假设生产者最小值Tp,消费者最小值为Tc,期望的吞吐为Tt,则分区数为Tt/Math.min(Tp,Tc)。原则是生产消费者的速度都要满足。一般分数区数副本设置根据集群的规模取值3-10个。