Kafka集群所有重要参数配置详解与优化设置
成文时间:2022年2月22日。参数如有变化,请以官网参数和默认值为准!
今天为大家带来Kafka生产优化系列的第二篇 —— Kafka集群所有重要参数配置详解与优化设置。
飞哥已将Kafka集群中所有重要参数全部分类总结,并具体讲解每个参数的含义。
如果各位同学在面试或者生产中如果遇到Kafka性能优化方面的问题,可以参考此文配置进行具体优化。
由大海哥主讲的更详细的《Kafka3.0入门、源码、优化与配置》系列课程,可以B站搜索“尚硅谷”进行了解!
Broker端配置详解
☆必配参数
官网提示:以下三个参数必配:
监听器相关参数
主题相关参数
线程相关参数
压缩相关参数
生产中,一般Kafka会配置压缩以减少磁盘占用。
附:Facebook Zstandard官网提供的压缩算法对比结果:
ZooKeeper相关参数
ZK相关的参数一般不做修改。默认即可。
重平衡与选举相关参数
重平衡相关参数需要根据实际需求进行调整,原理类似于HDFS中的重平衡。
日志刷写相关参数
在Linux系统中,当我们把数据写入文件系统之后,其实数据在操作系统的pagecache里面,并没有刷到磁盘上。如果操作系统挂了,数据就丢失了。大数据培训一方面,应用程序可以调用fsync这个系统调用来强制刷盘,另一方面,操作系统有后台线程,定时刷盘。频繁调用fsync会影响性能,需要在性能和可靠性之间进行权衡。实际上,官方不建议通过上述的三个参数来强制写盘,认为数据的可靠性通过replica来保证,而强制flush数据到磁盘会对整体性能产生影响。
尚硅谷大数据培训_专业的大数据培训机构_值得信赖的大数据教程
大数据
大数据教程
大数据培训
尚硅谷大数据拼课程、论口碑更给力
尚硅谷IT培训
立即咨询
Kafka的持久性并非要求同步数据到磁盘,因为问题节点都是从副本中恢复数据。这样刷盘依赖操作系统及Kafka的后台刷盘机制。这样的好处是:无需调优、高吞吐量、低延时和可全量恢复。
操作系统一般默认30s刷盘一次。
日志保留相关参数
日志保留相关参数需要根据具体的生产实际及磁盘容量与数据量进行调整。
日志滚动切片相关参数
日志滚动与切片参数建议根据生产实际进行调整。
元数据相关参数
元数据相关参数一般不做调整。
副本相关参数
副本相关参数一般不做调整。
offset相关参数
offset内部主题相关参数,一般保持默认即可。
消息相关参数
Topic级别配置详解
topic级别的参数,一般都在broker中对应有默认配置,但是也可以对单独的topic进行设置,可以在topic创建之初使用--config
来进行指定,也可以在创建完成之后再进行修改。
以下是比较重要的topic级别的参数配置。
日志清理压缩相关参数
日志刷写相关参数
索引相关参数
消息、副本与选举相关参数
日志保留与滚动相关参数
Producer端配置详解
Producer负责向服务器发送数据,在实际生产中,更多的是使用API作为Producer端进行数据发送。
以下是Producer端中比较重要的配置参数。
序列化、分区器、拦截器相关参数
集群地址与压缩相关参数
批处理相关参数
TCP缓冲相关参数
消息有序性相关参数
事务相关参数
Consumer端配置详解
Consumer对数据进行消费,一般通过流处理框架对Kafka中的数据进行消费处理,因此,Consumer端是否消费正常对于数据处理显得尤为重要。
以下是Consumer端的重要参数。