关于kafka 删除topic,kafka删除topic删不掉这个很多人还不知道,今天小深来为大家解答以上的问题,现在让我们一起来看看吧!

kafka 删除topic kafka删除topic删不掉kafka 删除topic kafka删除topic删不掉


kafka 删除topic kafka删除topic删不掉


1、log文件损坏的话就有点难受了5.1文件目录布局最为核心的三个配置 broker.id、log.dir、zookeeper.connect 。

2、根目录下有以下5个checkpoint文件: cleaner-offset-checkpoint, log-start-offset-checkpoint, meta.properties, recovery-point-offset-checkpoint, replication-offset-checkpoint分区目录下有以下目录: 0000xxx.index(偏移量为64位长整形,长度固定为20位), 0000xxx.log, 0000xxx.timeindex.还有可能包含.deleted .cleaned .swap等临时文件, 以及可能的.snapshot .txnindex leader-epoch-checkpoint5.2日志格式演变5.2.1 v0版本kafka0.10.0之前RECORD_OVERHEAD包括offset(8B)和message size(4B)RECORD包括:crc32(4B):crc32校验值magic(1B):消息版本号0attributes(1B):消息属性。

3、低3位表示压缩类型:0-NONE 1-GZIP 2-SNAPPY 3-LZ4(0.9.x引入)key length(4B):表示消息的key的长度。

4、-1代表nullkey: 可选value length(4B):实际消息体的长度。

5、-1代表nullvalue: 消息体。

6、可以为空,如墓碑消息5.2.2 v1版本kafka0.10.0-0.11.0attributes的第4位也被利用起来,0表示timestamp的类型为CreateTime,1表示timestamp的类型为LogAppendTimetimestamp类型由broker端参数来配置,默认为CreateTime,即采用生产者创建的时间戳5.2.3 消息压缩保证端到端的压缩,服务端配置compression.type,默认为"producer",表示保留生产者使用的压缩方式,还可以配置为"gzip","snappy","lz4"多条消息压缩至value字段,以提高压缩率5.2.4 变长字段变长整形(Varints):每一个字节都有一个位于位的m位(most significant bit),除了一个字节为1,其余都为0,字节倒序排列为了使编码更加高效,Varints使用ZigZag编码:sint32对应 (n>31) sint64对应 (n>63)5.2.5 v2版本Record Batchfirst offset:length:partition leader epoch:magic:固定为2attributes:两个字节。

7、低3位表示压缩格式,第4位表示时间戳类型,第5位表示事务(0-非事务1-事务),第6位控制消息(0-非控制1控制)first timestamp:max timestamp:producer id:producer epoch:first sequence:records count:v2版本的消息去掉了crc字段,另外增加了length(消息总长度)、timestamp delta(时间戳增量)、offset delta(位移增量)和headers信息,并且弃用了attributesRecordlength:attributes:弃用,但仍占据1Btimestamp delta:offset delta:5.3日志索引稀疏索引(sparse index):每当写入一定量(broker端参数log.index.interval.bytes指定,默认为4096B),偏移量索引文件和时间索引文件分别对应一个索引项1.大小超过broker端参数log.segment.bytes配置的值,默认为1073741824(1GB)2.当前日志段消息的时间戳与当前系统的时间戳值大于log.roll.ms或者log.roll.hours,ms优先级高,默认log.roll.hours=168(7天)3.索引文件或者时间戳索引文件的大小大于log.index.size.max.bytes配置的值,默认为10485760(10MB)4.偏移量值(offset-baseOffset)>Integer.MAX_VALUE5.3.1 偏移量索引每个索引项占用8个字节,分为两个部分:1.relativeOffset相对偏移量(4B) 2.ition物理地址(4B)bin/kafka-dump-log.sh --files /tmp/kafka-logs/topicId-0/00……00.index如果broker端参数log.index.size.max.bytes不是8的倍数,内部会自动转换为8的倍数5.3.2 时间戳索引每个索引项占用12个字节,分为两个部分:1.timestamp当前日志分段的时间戳(12B) 2.relativeOffset时间戳对应的相对偏移量(4B)如果broker端参数log.index.size.max.bytes不是12的倍数,内部会自动转换为12的倍数5.4日志清理日志清理策略可以控制到主题级别5.4.1 日志删除broker端参数log.cleanup.policy设置为delete(默认为delete)检测周期broker端参数log.retention.check.interval.ms=300000(默认5分钟)1.基于时间删除时先增加.delete后缀,延迟删除根据file.delete.delay.ms(默认60000)配置2.基于日志大小日志总大小为broker端参数log.retention.bytes(默认为-1,表示无穷大)日志段大小为broker端参数log.segment.bytes(默认为1073741824,1GB)3.基于日志起始偏移量DeleteRecordRequest请求1.KafkaAdmin的deleteRecord()2.kafka-delete-record.sh脚本5.4.2 日志压缩broker端参数log.cleanup.policy设置为compact,且log.cleaner.enable设置为true(默认为true)5.5磁盘存储相关测试:一个由6块7200r/min的RAID-5阵列组成的磁盘簇的线性写入600MB/s,随机写入100KB/s,随机内存写入400MB/s,线性内存3.6GB/sLinux作系统的vm.dirty_background_ratio参数用来指定页数量达到系统的百分比之后就触发pdflush/flush/kdmflush,一般小于10,不建议为0vm.dirty_ratio表示页百分比之后刷盘,但是阻塞新IO请求kafka同样提供同步刷盘及间断性强制刷盘(fsync)功能,可以通过、log.flush.interval.ms等参数来控制kafka不建议使用swap分区,vm.swappiness参数上限为100,下限为0,建议设置为15.5.2 磁盘I/O流程1.用户调用标准C库进行IO作,数据流为:应用程序Buffer->C库标准IOBuffer->文件系统也缓存->通过具体文件系统到磁盘2.用户调用文件IO,数据流为:应用程序Buffer->文件系统也缓存->通过具体文件系统到磁盘3.用户打开文件时使用O_DIRECT,绕过页缓存直接读写磁盘4.用户使用类似dd工具,并使用direct参数,绕过系统cache与文件系统直接读写磁盘Linux系统中IO调度策略有4种:1.NOOP:no operation2.CFQ3.DEADLINE4.ANTICIPATORY5.5.3 零拷贝指数据直接从磁盘文件到网卡设备中,不需要经应用程序对linux而言依赖于底层的sendfile()对ja而言,FileChannal.transferTo()的底层实现就是sendfile()。

本文到这结束,希望上面文章对大家有所帮助。