赞
踩
kafka通过topic作为主题缓存数据,一个topic主题可以包括多个partition,每个partition是一个有序的队列,同一个topic的不同partiton可以分配在不同的broker(kafka服务器)。
名称为t_zd的topic为3分区2副本,其在3节点kafka集群的分布如下:
主题,即消息存放的目录。
一个topic可以分为多个partition;
每个partition是一个有序的队列;
每个partition实际对应一个文件夹,包含多个segment文件;
partition中的每条消息都会分配一个有序的id,即offset;
[root@192 zd-first-topic-0]$ls 00000000000000000000.index 00000000000000000000.timeindex partition.metadata 00000000000000000000.log leader-epoch-checkpoint [root@192 zd-first-topic-0]$sh bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.log --print-data-log Dumping 00000000000000000000.log Log starting offset: 0 baseOffset: 0 lastOffset: 0 count: 1 baseSequence: 0 lastSequence: 0 producerId: 0 producerEpoch: 0 partitionLeaderEpoch: 0 isTransactional: false isControl: false deleteHorizonMs: OptionalLong.empty position: 0 CreateTime: 1712889750352 size: 79 magic: 2 compresscodec: none crc: 3489688351 isvalid: true | offset: 0 CreateTime: 1712889750352 keySize: -1 valueSize: 11 sequence: 0 headerKeys: [] payload: hello kafka baseOffset: 1 lastOffset: 1 count: 1 baseSequence: 1 lastSequence: 1 producerId: 0 producerEpoch: 0 partitionLeaderEpoch: 0 isTransactional: false isControl: false deleteHorizonMs: OptionalLong.empty position: 79 CreateTime: 1712889754967 size: 84 magic: 2 compresscodec: none crc: 2134132965 isvalid: true | offset: 1 CreateTime: 1712889754967 keySize: -1 valueSize: 16 sequence: 1 headerKeys: [] payload: kafka first test baseOffset: 2 lastOffset: 2 count: 1 baseSequence: 2 lastSequence: 2 producerId: 0 producerEpoch: 0 partitionLeaderEpoch: 0 isTransactional: false isControl: false deleteHorizonMs: OptionalLong.empty position: 163 CreateTime: 1712889762442 size: 85 magic: 2 compresscodec: none crc: 3019058576 isvalid: true | offset: 2 CreateTime: 1712889762442 keySize: -1 valueSize: 17 sequence: 2 headerKeys: [] payload: kafka second test [root@192 zd-first-topic-0]$
producer的acks参数表示当生产者生产消息的时候,写入到副本的要求严格程度。
log.retention.hours
: 控制日志文件保留的最长时间;log.retention.bytes
: 控制日志文件保留的最大大小;log.retention.minutes
: 控制日志文件保留的最短时间;log.retention.check.interval.ms
: 日志清理器检查日志是否满足清理条件的频率;log.cleaner.enable
: 是否启用日志清理;log.cleanup.policy
: 对于超过保留时间的日志文件,如何处理,默认delete。支持日志压缩(compaction)和delete+compaction;log.retention.hours
: 控制日志文件保留的最长时间,默认168小时(7天);log.delete.delay.ms
:执行延迟时间,默认1分钟;执行日志分段的删除任务时,会首先从Log对象中维护的日志分段的跳跃表中移除需要删除的日志分段,然后将日志分段所对应的数据文件和索引文件添加.deleted后缀。最后转交给名称为delete-file任务来删除以.deleted为后缀的文件,执行延迟时间可通过参数log.delete.delay.ms控制,默认为1分钟。
log.retention.bytes
: 控制日志文件保留的最大大小;log.delete.delay.ms
:执行延迟时间,默认1分钟;该策略会依次检查每个日志中的日志分段是否超出指定的大小(log.retention.bytes),对超出指定大小的日志分段采取删除策略。
# 对于segment log进行压缩
log.cleaner.enable=true
# 设置压缩后的日志保留的最长时间
log.retention.hours=168
# 设置日志清理进程的运行频率(以小时为单位)
log.cleanup.policy=compact
# 设置压缩后的日志文件保留的最大大小
log.retention.bytes=1073741824
# 设置segment文件的压缩类型
log.cleaner.io.buffer.size=524288
log.cleaner.io.max.bytes.per.second=1048576
log.cleaner.dedupe.buffer.size=134217728
log.cleaner.threads=2
log.cleaner.min.cleanable.ratio=0.5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。