原文:https://kafka.apache.org/documentation/#brokerconfigs。转载请注明出处,谢谢。欢迎拍砖指正
名称 | 说明 | 类型 | 默认值 | 有效值 | 重要性 |
---|---|---|---|---|---|
zookeeper.connect | Zookeeper host | String | 高 | ||
advertised.host.name | 弃用,改用‘advertised.listeners’ | string | null | 高 | |
advertised.listeners | 注册到ZK的地址,其它客户端通过这个地址来访问本节点。如果未配置,使用“listeners”的配置,跟“listeners”不一样的是 配置‘0.0.0.0‘无效 | string | null | 高 | |
advertised.port | 弃用,改用‘advertised.listeners’ | ||||
auto.create.topics.enable | 允许在服务器上自动创建topic | boolean | true | 高 | |
auto.leader.rebalance.enable | 是否允许leader自均衡 参考,由一个后台线程定时检查和触发 | boolean | true | 高 | |
background.threads | 处理后台任务的线程数 | int | 10 | [1,...] | 高 |
broker.id | 该服务的ID标识,默认自动生成唯一标识。为避免和ZK生成的冲突,自动生成的值从 ‘reserved.broker.max.id’ + 1 开始 | int | -1 | 高 | |
compression.type | 指定topic的最终压缩类型,如'gzip', 'snappy', 'lz4','uncompressed'表示不压缩, 'producer'表示保持producer的编码 | string | producer | 高 | |
delete.topic.enable | 允许删除topic,如果关闭,将不能通过admin tool删除topic | boolean | true | high | |
host.name | 废弃,改用‘listeners’ | string | "" | 高 | |
leader.imbalance.check.interval.seconds | 控制器触发检查partition平衡的频率 | long | 300 | 高 | |
leader.imbalance.per.broker.percentage | 允许leader不平衡的比例,超过此值后controller会触发leader balance,该值是百分比的分子 | int | 10 | 高 | |
listeners? | 需要监听的监听器:用逗号分割的URI列表,如果监听器名词不是一个安全的协议,‘ listener.security.protocol.map’也必须设置。指定主机名为 0.0.0.0绑定所有端口。主机名为空绑定到默认端口,例如:PLAINTEXT://myhost:9092,SSL://:9091 CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093 | string | null | 高 | |
log.dir | 保存log数据的目录('log.dirs'配置的补充) | string | /tmp/kafka-logs | 高 | |
log.dirs | 保存log数据的目录,为空则使用 'log.dir'的值 | string | null | 高 | |
log.flush.interval.messages | 每个log partition堆积的消息条数(批量刷新到磁盘,提高IO效率) | long | Long.MaxValue | [1,...] | 高 |
log.flush.interval.ms | 消息刷新到磁盘之前在内存驻留的时间。如未设置,使用'log.flush.scheduler.interval.ms'的值 | long | null | 高 | |
log.flush.offset.checkpoint.interval.ms | 更新最近刷新磁盘记录的频率,用来作为日志恢复点 | int | 60000 | [0,...] | 高 |
log.flush.scheduler.interval.ms | log flusher检查是否有log需要刷新到磁盘的时间间隔(ms) | long | Long.MaxValue | 高 | |
log.flush.start.offset.checkpoint.interval.ms | 更新日志起始offset的持续记录的频率。 | int | 60000 | [0,...] | 高 |
log.retention.bytes | log保留的最大尺寸,超过会开始删除 | long | -1 | 高 | |
log.retention.hours | log保留的时长(小时),优先级低于'log.retention.ms' | int | 168 | high | |
log.retention.minutes | log保留的时长(分钟),优先级低于'log.retention.ms',为空则使用'log.retention.hours'值 | int | null | 高 | |
log.retention.ms | log保留的时长(ms),为空则使用'log.retention.minutes'值 | int | null | 高 | |
log.roll.hours | 滚动建立新的log segment最长时间间隔(小时),优先级低于' log.roll.ms' | int | 168 | [1,...] | 高 |
log.roll.jitter.hours | 建立新的log segment允许的时间抖动(小时,减去该值)避免所有log同时操作造成IO瓶颈参考 | int | 168 | [1,...] | 高 |
log.roll.jitter.ms | 同上,未设置则使用'log.roll.jitter.hours'的值 | long | null | 高 | |
log.roll.ms | 滚动建立新的log segment最长时间间隔(ms),未设置则以'log.roll.hours'为准 | long | null | high | |
log.segment.bytes | log segment的最大尺寸 | int | 1073741824(2的30次方) | [14,...] | 高 |
log.segment.delete.delay.ms | 从文件系统中删除文件之前等待的时间参考 | long | 60000 | [0,...] | 高 |
message.max.bytes | Kafka允许的一批record数据的最大尺寸。如果数值增大了并且有早于0.10.2版本的consumer,则consumer的拉取尺寸('fetch.message.max.bytes')也需要增大才能拉取增大了尺寸的record。 在最新版本的消息格式中,为提高效率,record总是会分组成一批一批的。早起版本中,未压缩的record没有分组成批次,该设置适用于单个record。 每个topic的配置可通过'max.message.bytes'调整 | int | 1000012 | [0,...] | 高 |
min.insync.replicas | 当一个producer设置正确应答标识是 "all" (或 "-1")时,该配置表示需要最少有多少个副本应答成功后,此次写才认为是成功的。如果未达到配置的最小数,producer会抛出异常: NotEnoughReplicas 或 NotEnoughReplicasAfterAppend。二者结合使用提供更好的持久化保证。参考 | int | 1 | [1,...] | 高 |
num.io.threads | 服务器用于处理磁盘IO操作的线程数 | int | 8 | [1,...] | 高 |
num.network.threads | 服务器用于接收来自网络的请求并向网络发送响应的线程数 | int | 3 | [1,...] | 高 |
num.recovery.threads.per.data.dir | 每个data directory的线程数,用于在启动时恢复日志和关闭时刷新。 | int | 1 | 高 | |
num.replica.fetchers | 用于从source broker复制消息的 拉取线程 的数量。增加这个值可以增加follower broker的I/O并行度。 | int | 1 | high | |
offset.metadata.max.bytes | 一个offset提交时关联的metadata entry允许的最大尺寸offset相关请参考 | int | 4096 | 高 | |
offsets.commit.required.acks | 提交可被接受的确认标识,一般不应修改默认值-1 | short | -1 | 高 | |
offsets.commit.timeout.ms | offset提交会延迟直到offset topic的所有副本接收到commit请求或者达到这个过期时间。类似producer 请求超时时间 | int | 5000 | [1,...] | 高 |
offsets.load.buffer.size? | 从offset segment加载offset到缓存时的批量大小 | int | 5242880 | [1,...] | 高 |
offsets.retention.check.interval.ms | 检查过期offset的频率 | long | 600000 | [1,...] | 高 |
offsets.retention.minutes | 大于此保留期的offset将被丢弃。 | int | 1440 | [1,...] | 高 |
offsets.topic.compression.codec | offset topic的压缩编码,用于构建原子提交 | int | 0 | 高 | |
offsets.topic.num.partitions | offset topic 的partition数量,启动后不能再修改 | int | 50 | [1,...] | 高 |
offsets.topic.replication.factor | offset topic 的复制因子(设置更高以确保可用性),如果集群大小不满足此复制因子需求,内部topic创建将失败。 | short | 3 | [1,...] | 高 |
offsets.topic.segment.bytes | offset topic segment的字节数,应该相对小,便于日志压缩和缓存加载 | int | 104857600 | [1,...] | 高 |
port | 废弃,改用'listeners' | ||||
queued.max.requests | 在阻塞网络线程之前允许放入队列排队的请求数 | int | 500 | [1,...] | 高 |
quota.consumer.default | 废弃 | ||||
quota.producer.default | 废弃 | ||||
replica.fetch.min.bytes | 从副本拉取的响应最小字节数,如果不够,等待replicaMaxWaitTimeMs时间 | int | 1 | 高 | |
replica.fetch.wait.max.ms | follower replicas等待响应的最长时间。应该小于'replica.lag.time.max.ms'以避免ISR副本因为低吞吐量topic而频繁收缩 | int | 500 | 高 | |
replica.high.watermark.checkpoint.interval.ms | high watermark保存到磁盘的频率 | long | 5000 | 高 | |
replica.lag.time.max.ms | 如果follower没有在这个时间内发送拉取请求或者没有消费leader的log end offset。leader会将该follower从isr副本中移除 | long | 10000 | 高 | |
replica.socket.receive.buffer.bytes | socket接收网络请求的缓冲区大小 | int | 65536 | 高 | |
replica.socket.timeout.ms | socket接收网络请求的超时时间,最小应等于'replica.fetch.wait.max.ms'的值 | int | 30000 | high | |
request.timeout.ms | 客户端等待请求响应的最大时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,耗尽重试次数后则请求失败。 | int | 30000 | 高 | |
socket.receive.buffer.bytes | SO_RCVBUF缓冲区大小,设置成 -1 使用操作系统默认值 | int | 102400 | 高 | |
socket.request.max.bytes | socket request的最大字节数 | int | 104857600 | [1,...] | 高 |
socket.send.buffer.bytes | SO_SNDBUF缓冲区大小,设置成 -1 使用操作系统默认值 | int | 102400 | 高 | |
transaction.max.timeout.ms | 事物最大超时时间。如果客户端请求的事务时间超过了这个值,broker会在InitProducerIdRequest请求中返回一个错误。这可以防止客户端超时太久,阻止consumer从这个事务包含的topic读取。 | int | 900000 | [1,...] | 高 |
transaction.state.log.load.buffer.size | 从事务日志segment加载producer ids和事务到缓存时的批大小 | int | 5242880 | [1,...] | 高 |
transaction.state.log.min.isr | 覆盖transaction topic的'min.insync.replicas'配置 | int | 2 | [1,...] | 高 |
transaction.state.log.num.partitions | transaction topic的partition数量,启动会不能再修改 | int | 50 | [1,...] | 高 |
transaction.state.log.replication.factor | transaction topic的复制因子(设置更高以确保可用性)。如果集群大小不满足此复制因子需求,内部topic创建将失败。 | short | 3 | [1,...] | 高 |
transaction.state.log.segment.bytes | transaction topic segment的字节数,应该相对小,便于日志压缩和缓存加载 | int | 104857600 | [1,...] | 高 |
transactional.id.expiration.ms | transaction coordinator将等待的最大时间量,在此期间如果没有接收到任何事务状态更新,会主动终止一个producer的transactional id | int | 604800000 | [1,...] | 高 |
unclean.leader.election.enable | 是否允许选举不在isr中的副本作为leader(作为最后手段),此举会导致数据丢失 | boolean | false | 高 | |
zookeeper.connection.timeout.ms | 客户端和ZK建立连接的超时时长。未设置则使用'zookeeper.session.timeout.ms'的值 | int | null | 高 | |
zookeeper.session.timeout.ms | ZK session timeout | int | 6000 | 高 | |
zookeeper.set.acl | 设置客户端使用安全的ACLs | boolean | false | 高 | |
broker.id.generation.enable | 允许自动生成broker id。启用时需检查'reserved.broker.max.id'的值 | boolean | true | 中 | |
broker.rack | broker的机架信息。将用于机架感知的复制任务,能更好的容错。示例:RACK1 , us-east-1d
|
string | null | 中 | |
connections.max.idle.ms | 空闲连接超时时间:服务器socket处理线程会关闭空闲超过改时间的连接。 | long | 600000 | 中 | |
controlled.shutdown.enable | 允许优雅的关闭broker,参考 | boolean | true | 中 | |
controlled.shutdown.max.retries | 关闭失败时的重试次数 | int | 3 | 中 | |
controlled.shutdown.retry.backoff.ms | 每次失败后重试等待的时间间隔,系统需要时间来从导致先前失败的状态中恢复 | long | 5000 | 中 | |
controller.socket.timeout.ms | controller-to-broker的socket超时时间 | int | 30000 | 中 | |
default.replication.factor | 自动创建的topic的默认复制因子 | int | 1 | 中 | |
delete.records.purgatory.purge.interval.requests? | 删除records request的purgatory清洗间隔 (在请求数量上的间隔)参考 | int | 1 | 中 | |
fetch.purgatory.purge.interval.requests | 拉取request的purgatory清洗间隔 (在请求数量上的间隔) | int | 1000 | 中 | |
group.initial.rebalance.delay.ms | 在执行第一次再平衡之前,group coordinator等待的时间以便让更多的consumer加入一个新的group。一个较长的延迟意味着潜在的更少的重新平衡,但是增加了处理开始的时间。 | int | 3000 | 中 | |
group.max.session.timeout.ms | 已注册的consumer的最大session超时时间。长时间的超时会给consumer更多的时间来处理心跳之间的信息,代价是需要更长的时间来检测故障。 | int | 300000 | 中 | |
group.min.session.timeout.ms | 已注册的consumer的最小session超时时间。更短的超时时间会有更快的故障检测,代价是更频繁的consumer心跳,可能会压垮broker的资源。 | int | 6000 | 中 | |
inter.broker.listener.name | 用于在broker之间进行通信的监听器的名称。如未设置,采用'security.inter.broker.protocol'的值。但二者同时设置会报错 | string | null | 中 | |
inter.broker.protocol.version | 指定broker通信协议版本。比如0.8.0, 0.8.1, 0.8.1.1, 0.8.2, 0.8.2.0, 0.8.2.1, 0.9.0.0, 0.9.0.1 | string | 1.0-IV0 | 中 | |
log.cleaner.backoff.ms | log cleaner没有日志需要清理时的睡眠时间 | long | 15000 | [0,...] | 中 |
log.cleaner.dedupe.buffer.size | 用于在所有cleaner线程进行日志删除的dedupe buffer大小。 | long | 134217728 | 中 | |
log.cleaner.delete.retention.ms | delete record保留时间 | long | 86400000 | 中 | |
log.cleaner.enable | 是否允许log cleaner允许,如果topic的cleanup.policy=compact则必须允许,包括offsets topic。如果被禁用,这些topic将不会被压缩,并且不断地增大。 | boolean | true | 中 | |
log.cleaner.io.buffer.load.factor | Log cleaner的dedupe buffer负载系数。可以设置为1。一个较高的值将允许同时清理更多的日志,但是会导致更多的散列冲突。 | double | 0.9 | 中 | |
log.cleaner.io.buffer.size | 用于在所有cleaner线程进行日志删除的I/O buffer大小 | int | 524288 | [0,...] | 中 |
log.cleaner.io.max.bytes.per.second | 控制log cleaner的读写I/O均值少于该值 | double | 1.7976931348623157E308 | 中 | |
log.cleaner.min.cleanable.ratio | 最小脏日志比例达到多少时会被清理 | double | 0.5 | 中 | |
log.cleaner.min.compaction.lag.ms | 消息在日志中保持不压缩的最小时间。只适用于被压缩的日志。 | long | 0 | 中 | |
log.cleaner.threads | 用于日志清理的后台线程数。 | int | 1 | [0,...] | 中 |
log.cleanup.policy | 在保留窗口之外的segments的默认清理策略。有效的策略是:“delete”和“compact” | list | delete | [compact, delete] | 中 |
log.index.interval.bytes | 我们将一个entry添加到offset的间隔。 | int | 4096 | [0,...] | 中 |
log.index.size.max.bytes | offset索引的最大字节数 | int | 10485760 | [4,...] | 中 |
log.message.format.version | 指定broker将消息追加到log中的消息格式化版本。该值应该是一个有效的ApiVersion。比如 0.8.2, 0.9.0.0, 0.10.0。通过设置特定的消息格式版本,用户能确认磁盘上的所有现有消息版本都比指定的更小或相等。不正确地设置此值将导致旧版本的用户中断,因为他们不理解接收的消息。 | string | 1.0-IV0 | 中 | |
log.message.timestamp.difference.max.ms | broker和message的时间戳差异允许的最大值。如果log.message.timestamp.type=CreateTime,且时间戳的差异超过此阈值,则将拒绝消息。 如果log.message.timestamp.type=LogAppendTime将忽略该配置。该值不要超过log.retention.ms的值,避免不必要的日志频繁滚动 | long | 9223372036854775807 | 中 | |
log.message.timestamp.type | 定义消息中的时间戳是消息创建时间还是日志追加时间。可以是 'CreateTime' 或 'LogAppendTime' | string | CreateTime | [CreateTime, LogAppendTime] | 中 |
log.preallocate | 创建新segment时是否预分配文件? window下建议设置为true | boolean | false | 中 | |
log.retention.check.interval.ms | log cleaner检查log是否可以删除的时间间隔 | long | 300000 | [1,...] | 中 |
max.connections.per.ip | 每个ip地址所允许的最大连接数。 | int | 2147483647 | [1,...] | 中 |
max.connections.per.ip.overrides | 每个ip或主机名的最大连接数。覆盖全局默认值 | string | '''' | 中 | |
num.partitions | 每个topic的log partition的默认数量。 | int | 1 | [1,...] | 中 |
principal.builder.class | 实现KafkaPrincipalBuilder接口的类的完全限定名,用于构建授权使用的KafkaPrincipal对象。此配置还支持PrincipalBuilder(已弃用)接口,该接口用于在SSL基础上进行客户端身份验证。如果该配置未指定,默认行为取决于使用的安全协议。对于SSL身份验证,如果有提供客户端证书,则principal名称来自于它;如果不需要客户端身份验证,则principal名称是ANONYMOUS。对于SASL身份验证,principal由sasl.kerberos.principal.to.local.rules定义的规则决定。如果使用了GSSAPI,并且SASL身份验证ID用于其它机制。对于PLAINTEXT,principal是ANONYMOUS | class | null | 中 | |
producer.purgatory.purge.interval.requests | producer的request purgatory清洗间隔(请求数) | int | 1000 | 中 | |
queued.max.request.bytes | 在没有读取更多请求之前允许排队的字节数。 | long | -1 | 中 | |
replica.fetch.backoff.ms | 拉取partition错误时的睡眠时间。 | int | 1000 | [0,...] | 中 |
replica.fetch.max.bytes | 每个partition拉取的消息字节数。并不是一个绝对最大值,如果拉取的第一个非空分区中的第一个记录批大于这个值,那么将仍然返回记录批,以确保操作完成。broker接受的最大record批大小由message.max.bytes (broker 配置) or max.message.bytes (topic 配置)定义. | int | 1048576 | [0,...] | 中 |
replica.fetch.response.max.bytes | int | 10485760 | [0,...] | 中 | |
reserved.broker.max.id | 保留的broker id最大值,即用户可以自定义的最大值 | int | 1000 | [0,...] | 中 |
sasl.enabled.mechanisms | |||||
sasl.kerberos.kinit.cmd | |||||
sasl.kerberos.min.time.before.relogin | |||||
sasl.kerberos.principal.to.local.rules | |||||
sasl.kerberos.service.name | |||||
sasl.kerberos.ticket.renew.jitter | |||||
sasl.kerberos.ticket.renew.window.factor | |||||
sasl.mechanism.inter.broker.protocol | |||||
security.inter.broker.protocol | |||||
ssl.cipher.suites | |||||
ssl.client.auth | |||||
ssl.enabled.protocols | |||||
ssl.key.password | |||||
ssl.keymanager.algorithm | |||||
ssl.keystore.location | |||||
ssl.keystore.password | |||||
ssl.keystore.type | |||||
ssl.protocol | |||||
ssl.provider | |||||
ssl.trustmanager.algorithm | |||||
ssl.truststore.location | |||||
ssl.truststore.password | |||||
ssl.truststore.type | |||||
alter.config.policy.class.name | 用来校验的配置变更策略类。必须实现org.apache.kafka.server.policy.AlterConfigPolicy接口 | class | null | low | |
authorizer.class.name? | 用来鉴权的类 | string | '''' | low | |
create.topic.policy.class.name | 创建topic的策略类,用于校验,需实现org.apache.kafka.server.policy.CreateTopicPolicy接口 | class | null | low | |
listener.security.protocol.map | |||||
metric.reporters | |||||
metrics.num.samples | |||||
metrics.recording.level | |||||
metrics.sample.window.ms | |||||
quota.window.num | |||||
quota.window.size.seconds | |||||
replication.quota.window.num | |||||
replication.quota.window.size.seconds | |||||
ssl.endpoint.identification.algorithm | |||||
ssl.secure.random.implementation | |||||
transaction.abort.timed.out.transaction.cleanup.interval.ms | |||||
transaction.remove.expired.transaction.cleanup.interval.ms | |||||
zookeeper.sync.time.ms |
可多详细配置项可以阅读代码: kafka.server.KafkaConfig
- offset的管理?
- Kafka里面的事务?
网友评论