大数据(4h)Kafka经验小结(不定更)
Posted 小基基o_O
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(4h)Kafka经验小结(不定更)相关的知识,希望对你有一定的参考价值。
主要参数优化
文件 or 命令 | 参数名 | 参数说明 | 参数值建议 | 说明 |
---|---|---|---|---|
server.properties | log.retention.hours | 数据保留时间 | 72 | 建议3天 |
server.properties | default.replication.factor | 默认副本策略 | 2 | 建议>1 |
kafka-topics.sh | --replication-factor | 创建主题时副本策略 | 2 | 建议>1 |
kafka-server-start.sh | KAFKA_HEAP_OPTS | 内存 | -Xms5G -Xmx5G | 建议不超过6G |
主题和分区的设计
-
Kafka数据在分区内有序,在主题中不一定有序
主题划分:按业务、按表…
分区划分:按地区、按表中不影响排序的字段… -
Kafka分区数设定
1、创建单分区主题
2、测试该主题的生产者吞吐量和消费者吞吐量(使用内置脚本)
3、 分 区 数 = 吞 吐 量 预 期 / m i n ( 吞 吐 量 生 产 者 , 吞 吐 量 消 费 者 ) 分区数=吞吐量_{预期}/min(吞吐量_{生产者},吞吐量_{消费者}) 分区数=吞吐量预期/min(吞吐量生产者,吞吐量消费者)
挂了咋办?
- 通常挂掉的原因:OOM
-
挂掉以后有什么不良后果?
数据丢失:当ack=1且leader收消息后还没来得及同步就挂了时,数据会丢失
当没有开启事务,非幂等操作时,数据会重复 -
处理方式
1、重启Kafka
2、查看日志错误信息
3、优化配置以减少挂掉的概率
4、处理丢失或重复的数据
数据积压
-
原因:消费者太慢或挂掉
-
影响:积压3天后没被消费,数据丢失
-
解决方案:
1、加主题的分区数,并且同时增加消费组的消费者数,使得 消 费 者 数 = 分 区 数 消费者数=分区数 消费者数=分区数
2、优化消费者,如:增加每批次拉取的数量
单条日志传输大小
- Kafka对于消息体的大小默认为单条最大值是1M;
但某些场景里一条消息大于1M,此时需要配置server.properties
文件的如下参数
参数名 | 参数说明 |
---|---|
replica.fetch.max.bytes | Broker可复制的消息的最大字节数 |
message.max.bytes | Kafka会接收单个消息size的最大限制 要求: message.max.bytes ≤replica.fetch.max.bytes |
过期数据清理
两种策略 | 参数 |
---|---|
删除策略 | log.cleanup.policy = delete |
压缩策略 | log.cleanup.policy = compact |
消费者策略
- 消 费 者 组 的 消 费 者 数 = 主 题 下 的 分 区 数 消费者组的消费者数=主题下的分区数 消费者组的消费者数=主题下的分区数
- 按照时间消费数据
- 自动提交消费者偏移量(速度快但故障后可能会丢数据)
- 手动提交消费者偏移量(降低数据风险但增加代码复杂度)
以上是关于大数据(4h)Kafka经验小结(不定更)的主要内容,如果未能解决你的问题,请参考以下文章