【大数据学习 | kafka高级部分】kafka的优化参数整理
1. 优化参数
参数 | 解释 |
---|---|
buffer.memory | RecordAccumulator 缓冲区总大小,默认 32m |
batch.size | 默认 16k,sender线程拉取数据大小 |
linger.ms | sender线程拉取数据等待时长 |
acks | 确认应答 0 1 -1 |
max.in.flight.requests.per.connection | 没有ack返回时候可以发送几次数据 |
retries | producer失败重试次数 |
enable.idempotence | 启幂等性,默认 true |
compression.type | 生产者发送的所有数据的压缩方式 |
auto.leader.rebalance.enable | leader是否自动切换 |
leader.imbalance.per.broker.percentage | leader均衡比10% |
leader.imbalance.check.interval.seconds | leader均衡检测时间五分钟 |
log.segment.bytes | segment大小 |
log.index.interval.bytes | 每4k生成一个索引数据,写入一次文件 |
log.cleanup.policy | 日志删除方式 |
log.retention.hours | 数据保存时长 |
enable.auto.commit | 自动提交 |
auto.commit.interval.ms | 提交间隔 |
auto.offset.reset | 初始化消费位置 |
offsets.topic.num.partitions | __consumer_offsets分区数量 |
session.timeout.ms | 消费者断开超时时间 |
max.poll.records | 消费者拉取条数 |
fetch.max.bytes | 消费者拉取大小 |
partition.assignment.strategy | 消费者分区分配策略 |
2. 数据吞吐量和数据重复问题
数据在消费的时候可能会遇见数据堆积,无法及时消费计算的问题
这个时候可以适当的调节broker的数量和partition的数量,让多个机器帮助进行处理可提高吞吐量,并且分区越多消费者就可以适当增多,让消费速度得到很大的提升
适当增加每次拉取的大小也会增加消费速度。
max.poll.records 消费者拉取条数
fetch.max.bytes 消费者拉取大小
kafka数据稳定性保证。
首先从producer出发
ack = 0 or ack = 1 会出现数据丢失问题
ack = -1 会出现数据重复问题
开始幂等性可以进行单分区去重
保证一批次数据稳定性可以开启事物
消费者部分如果是自动提交偏移量会出现重复消费问题,手动保存偏移量就不会出现这个问题