参考官方文档
broker.id
Kafka集群中Broker的唯一标识。
zookeeper.connect
Zookeeper连接地址,支持逗号分隔的形式配置多个zk地址,也可以在最后加上zk的路径。如zookeeper.connect=bigdata-1:2181,bigdata-2:2181,bigdata-3:2181/kafka。
advertised.listeners(默认值为null)
Kafka客户端使用的地址,不配置的话使用listeners配置的值。当Borker之间使用内网通信,Producer和Consumer使用外网通信时,需要配置advertised.listeners为外网地址。
listeners(默认值为null)
Borker之间通信地址,可以逗号分隔的形式配置多个IP和端口,支持PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL等安全协议。如果IP配置为0.0.0.0,则相当于bind了所有网卡。如果IP地址不配置的话,则会使用回环地址。如listeners=PLAINTEXT://bigdata-2:6667。
auto.create.topics.enable(默认值为true)
是否允许自动创建Topic,默认值为true,建议线上环境设置为false,严格管理新增的Topic。
auto.leader.rebalance.enable(默认值为true)
如果某个Partition的Leader挂掉,该Partition副本所在的Broker会成为这Partition的Leader,这样会造成Leade分布不均衡,Leader多的Broker读写压力都会比较大。如果开启了auto.leader.rebalance.enable,则当原来挂掉的Broker恢复正常以后,可以夺回Leader。
leader.imbalance.per.broker.percentage (默认值为10)
所有Broker中leader的不平衡比例,若是超过这个数值,会对分区进行重新的平衡。Broker的分区不平衡比例=非优先副本的leader个数/分区总数。只有当auto.leader.rebalance.enable设置为true时才有效。建议将auto.leader.rebalance.enable设置为false,避免集群自动执行优先副本选举,因为这样不可控。最好是手动使用path-to-json-file的方式小批量执行优先副本选举。
leader.imbalance.check.interval.seconds(默认值为300)
检查集群leader是否平衡的时间间隔。
compression.type(默认值为producer)
Broker对消息的压缩格式,支持gzip、snappy、 lz4、zstd和uncompressed。也可以配置成producer,表示以Producer端设置的压缩方式为准。
delete.topic.enable(默认值为true)
是否支持使用管理工具删除Topic,默认为true,支持删除。
log.dir(默认值为/tmp/kafka-logs)
Broker数据的存储目录。
log.dirs(默认值为null)
Broker数据的存储目录,支持配置多个目录,一般都会每个磁盘配置一个目录。如果没有配置,则使用log.dir指定的目录作为数据存储目录。如果配置了,则优先级高于log.dir。
log.flush.interval.messages(默认值为Long.MAX_VALUE)
设置当一个分区的Log文件积累了多少数据量以后Flush到磁盘。备注:操作系统也会不定期的把缓存中的数据Flush到磁盘。
log.flush.interval.ms(默认值为null)
设置一个分区Log文件中的数据在缓冲区的最长时间,超过这个时间则需要FLush到磁盘。如果不设置,则使用参数log.flush.scheduler.interval.ms的值。
log.flush.scheduler.interval.ms(默认值为Long.MAX_VALUE)
设置每隔多久检查一次分区Log文件是否需要Flush到磁盘。
log.flush.offset.checkpoint.interval.ms(默认值为60000)
设置Flush已经存储到磁盘的数据的offset的频率,在数据恢复的时候使用。比如Flush到磁盘的数据的最大offset为99,则在数据恢复时,需要从其他副本offset为100开始拉去数据。
log.flush.start.offset.checkpoint.interval.ms
更新Log起始offset的持久记录的频率。
log.retention.hours(默认值为168)
Kafka数据Housekeeping策略,默认为168小时,即7天。
log.retention.minutes(默认值为null)
Kafka数据Housekeeping策略,如果不设置,则使用参数log.retention.hours设置的值。
log.retention.ms(默认值为null)
Kafka数据Housekeeping策略,如果不设置,则使用参数log.retention.minutes设置的值。如果设置为-1,则表示不做Housekeeping。
log.segment.delete.delay.ms(默认值为60000)
日志文件被真正删除前的保留时间。当删除的条件满足以后,日志将被“删除”,但是这里的删除其实只是将该日志进行了“delete”标注,文件只是无法被索引到了而已。但是文件本身,仍然是存在的,只有当过了log.segment.delete.delay.ms 这个时间以后,文件才会被真正的从文件系统中删除。
log.roll.hours(默认值为168)
Kafka的数据文件滚动策略,默认为168小时,即7天。
log.roll.ms(默认值为null)
Kafka的数据文件滚动策略,如果不设置,则使用参数log.roll.hours设置的值。
log.segment.bytes(默认值为1073741824)
Kafka的数据文件滚动策略,默认值为1073741824个字节,即1G。
message.max.bytes (默认值为1000012)
Broker接收Producer单次请求的最大字节数,间接限制了单条消息的大小。该参数值不应该设置得大于Consumer端fetch.message.max.bytes参数的值。
min.insync.replicas (默认值为1)
当Producer端将acks设置为"all"或者"-1"时,min.insync.replicas指定必须确认成功写入的最小副本数。如果达不到min.insync.replicas指定的数量,则Producer端会抛NotEnoughReplicas 或NotEnoughReplicas。
num.io.threads(默认值为8)
Broker端处理数据请求和响应的线程数,包括处理磁盘IO的线程。
num.network.threads(默认值为3)
Broker端处理网络连接的线程数。
num.replica.fetchers(默认值为1)
当需要从其他Broker拉取数据时,该参数限制了用于拉取数据的线程数。增加该参数的值,可以提高IO的并行度。
queued.max.requests(默认值为500)
Broker端请求队列大小。
replica.fetch.min.bytes(默认值为1)
限制每个Fetch Response的最小字节数,如果达不到该参数设置的值,则需要等待参数replica.fetch.wait.max.ms指定的毫秒数。
replica.fetch.wait.max.ms(默认值为500)
限制Fetch Response的字节数达不到replica.fetch.min.bytes指定的值时,Fetch Request需要等待的时间。
replica.lag.time.max.ms(默认值为10000)
该参数设置了Leader将Replica移出ISR的条件。当Replica在该参数指定的时间没有从Leader拉取数据,也没有追上Leader的LEO,则Leader会该Replica移出ISR。
request.timeout.ms(默认值为30000)
该参数限制了客户端等待响应的最长时间,超过了这个时间,则客户端会重新发送请求。
unclean.leader.election.enable(默认值为false)
是否允许非ISR的Replica参与竞选Leader。
zookeeper.connection.timeout.ms(默认值为null)
等待与Zookeeper建立连接的最长时间。如果没有设置该参数,则使用zookeeper.session.timeout.ms参数指定的参数值。
zookeeper.session.timeout.ms(默认值为6000)
与Zookeeper建立连接的超时时间。
default.replication.factor(默认值为1)
创建Topic时,默认的Replica数量。
num.partitions(默认值为1)
创建Topic时,默认的分区数量。