原文地址:https://kafka.apache.org/0101/documentation.html#brokerconfigs
基本配置如下:
broker.id
log.dirs
-
zookeeper.connect
Topic 级别的配置和默认值将在下面进行更详细的讨论。
配置项 | 描述 | 值的类型 | 默认值 | 有效值 | 重要级别 |
---|---|---|---|---|---|
zookeeper.connect | ZooKeeper 主机地址 | string | 高 | ||
advertised.host.name | 已废弃:仅在没有设置advertised.listeners 或listeners 时使用。使用advertised.listeners 替代。供客户端使用的发布到 ZooKeeper 上的主机名。在IaaS环境中,这可能需要与代理服务器绑定到的接口不同。如果没有设置,它将使用host.name 的值。 否则它将使用从java.net.InetAddress.getCanonicalHostName()返回的值。 |
string | null | 高 | |
advertised.listeners | 供客户端使用的发布到 ZooKeeper 上的监听器。在IaaS环境中,这可能需要与代理绑定到的接口不同。 如果没有设置,将使用listeners 的值。 |
string | null | 高 | |
advertised.port | 已废弃:仅在没有设置advertised.listeners 或 listeners 时使用。使用advertised.listeners 替代。供客户端使用发布到 ZooKeeper 上的端口号。在IaaS环境中,这可能需要与代理服务器绑定到的端口不同。 如果没有设置,它将发布与该代理服务器绑定的相同的端口。 |
int | null | 高 | |
auto.create.topics.enable | 开启在服务器自动创建 topic | boolean | true | 高 | |
auto.leader.rebalance.enable | 启用 leader 均衡。 如果需要,后台线程会定期检查并触发 leader 均衡 | boolean | true | 高 | |
background.threads | 用于各种后台处理任务的线程数 | int | 10 | [1,...] | 高 |
broker.id | 该服务器的代理ID。 如果未设置,将生成唯一的代理ID。为了避免zookeeper生成的代理ID和用户配置的代理ID之间的冲突,请从 reserved.broker.max.id + 1生成代理 idsstart。 | int | -1 | 高 | |
compression.type | 指定给定 topic 的最终压缩类型。此配置接受标准压缩编解码器('gzip','snappy','lz4')。 它还接受相当于没有压缩的'uncompressed' 和'producer',这意味着保留由制作者设置的原始压缩编解码器。 | string | producer | 高 | |
delete.topic.enable | 启用删除 topic,如果此配置已关闭,通过管理工具删除 topic 将无效 | boolean | false | 高 | |
host.name | 已废弃,只有当listeners 没设置时才有效,使用listeners 替代,broker 主机名,如果设置这项,它将只绑定到这个地址。 如果未设置,将绑定到所有接口 |
string | "" | 高 | |
leader.imbalance.check.interval.seconds | 控制器触发分区重新均衡检查的频率 | long | 300 | 高 | |
leader.imbalance.per.broker.percentage | 每个 broker 允许 leader 不均衡的比例,如果每个 leader 超过该值,控制器将触发 leader 均衡。该值以百分比指定。 | int | 10 | 高 | |
listeners | 监听器列表,用 URI 及其端口用逗号分隔,指定主机名为0.0.0.0绑定到所有接口。 将主机名留空以绑定到默认界面。 合法监听器列表示例:PLAINTEXT:// myhost:9092,TRACE://:9091 PLAINTEXT://0.0.0.0:9092,TRACE:// localhost:9093 | string | null | 高 | |
log.dir | 保存日志数据的目录(log.dirs属性的补充) | string | /tmp/kafka-logs | 高 | |
log.dirs | 保存日志数据的目录。 如果未设置,则使用log.dir中的值 | string | null | 高 | |
log.flush.interval.messages | 消息被刷新到磁盘之前在日志分区上累积的消息数 | long | 9223372036854775807 | [1,...] | 高 |
log.flush.interval.ms | 任何 topic 中的消息在刷新到磁盘之前保存在内存中的最长时间(毫秒)。 如果未设置,则使用log.flush.scheduler.interval.ms中的值 | long | null | 高 | |
log.flush.offset.checkpoint.interval.ms | 更新作为日志恢复点的上次刷新的持久记录的频率 | int | 60000 | [0,...] | 高 |
log.flush.scheduler.interval.ms | 日志刷新程序检查是否需要将任何日志刷新到磁盘的以ms为单位的频率 | long | 9223372036854775807 | 高 | |
log.retention.bytes | 删除之前日志的最大大小 | long | -1 | 高 | |
log.retention.hours | 在删除之前保留日志文件的小时数(以小时为单位),第三级到log.retention.ms属性 | int | 168 | 高 | |
log.retention.minutes | 在删除之前保留日志文件的分钟数(以分钟为单位),次于log.retention.ms属性。 如果未设置,则使用log.retention.hours中的值 | int | null | 高 | |
log.retention.ms | 删除之前保留日志文件的毫秒数(以毫秒为单位)如果未设置,则使用log.retention.minutes中的值 | long | null | 高 | |
log.roll.hours | 在新的日志段推出之前的最长时间(以小时为单位),次于log.roll.ms属性 | int | 168 | [1,...] | 高 |
log.roll.jitter.hours | 从logRollTimeMillis(以小时为单位)减去最大抖动,次要为log.roll.jitter.ms属性 | int | 0 | [0,...] | 高 |
log.roll.jitter.ms | 从logRollTimeMillis(以毫秒为单位)减去最大抖动。 如果未设置,则使用log.roll.jitter.hours中的值 | long | null | 高 | |
log.roll.ms | 新日志段推出之前的最长时间(以毫秒为单位)。 如果未设置,则使用log.roll.hours中的值 | long | null | 高 | |
log.segment.bytes | 单个日志文件的最大大小 | int | 1073741824 | [14,...] | 高 |
log.segment.delete.delay.ms | 从文件系统中删除文件之前等待的时间 | long | 60000 | [0,...] | 高 |
message.max.bytes | 服务器可以接收的消息的最大大小 | int | 1000012 | [0,...] | 高 |
min.insync.replicas | 当生产者将acks设置为“all”(或“-1”)时,min.insync.replicas指定必须确认写入被认为是成功的最小副本数。 如果此最小值不能满足,则生产者将引发异常(NotEnoughReplicas或NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicas和acks允许您强制更大的耐用性保证。 典型的情况是创建一个复制因子为3的主题,将min.insync.replicas设置为2,并使用“all”的acks生成。 如果大多数副本没有收到写入,这将确保生产者引发异常。 | int | 1 | [1,...] | 高 |
num.io.threads | 服务器用于执行网络请求的io线程数 | int | 8 | [1,...] | 高 |
num.network.threads | 服务器用于处理网络请求的网络线程数 | int | 3 | [1,...] | 高 |
num.recovery.threads.per.data.dir | 每个数据目录用于启动时的日志恢复和关机时的刷新的线程数 | int | 1 | [1,...] | 高 |
num.replica.fetchers | 用于从源broker复制消息的抓取器线程数。增加这个值可以增加broker的I / O并行度。 | int | 1 | 高 | |
offset.metadata.max.bytes | 与偏移提交相关联的元数据条目的最大大小 | int | 4096 | 高 | |
offsets.commit.required.acks | 在提交之前所需的acks可以被接受。 一般来说,默认值(-1)不应该被重写 | short | -1 | 高 | |
offsets.commit.timeout.ms | 偏移提交将被延迟,直到所有偏移主题的副本接收到提交或达到此超时。 这与生产者请求超时相似。 | int | 5000 | [1,...] | 高 |
offsets.load.buffer.size | 当将偏移量加载到缓存中时,从偏移片段读取的批量大小。 | int | 5242880 | [1,...] | 高 |
offsets.retention.check.interval.ms | 检查失效偏移量的频率 | long | 600000 | [1,...] | 高 |
offsets.retention.minutes | 日志保留窗口在几分钟内用于补偿主题 | int | 1440 | [1,...] | 高 |
offsets.topic.compression.codec | 用于偏移主题的压缩编解码器 - 压缩可用于实现“原子”提交 | int | 0 | 高 | |
offsets.topic.num.partitions | 偏移提交主题的分区数(部署后不应更改) | int | 50 | [1,...] | 高 |
offsets.topic.replication.factor | 偏移主题的复制因子(设置得更高以确保可用性)。 为了确保偏移主题的有效复制因子是配置的值,活动经纪人的数量必须至少为首次请求偏移主题时的复制因子。 如果没有,则偏移主题创建将失败,否则将获得最小复制因子(活着的经纪人,配置的复制因子) | short | 3 | [1,...] | 高 |
offsets.topic.segment.bytes | 偏移主题段字节应保持相对较小,以便于更快的日志压缩和缓存加载 | int | 104857600 | [1,...] | 高 |
port | 已废弃:listeners 替代,端口监听和接受连接 |
int | 9092 | 高 | |
queued.max.requests | 阻塞网络线程之前允许的排队请求数 | int | 500 | [1,...] | 高 |
quota.consumer.default | 已废弃:仅当动态默认配额未配置为或在Zookeeper中时使用。 由clientId / consumer group区分的任何消费者如果每秒钟获取的字节数超过此值,将会受到限制 | long | 9223372036854775807 | [1,...] | 高 |
quota.producer.default | 已废弃:仅在没有为Zookeeper配置动态默认配额时使用。 任何由clientId区分的生产者如果每秒生成的字节数大于此值,将会被限制 | long | 9223372036854775807 | [1,...] | 高 |
replica.fetch.min.bytes | 每个提取响应的最小字节数。 如果没有足够的字节,请等待replicaMaxWaitTimeMs | int | 1 | 高 | |
replica.fetch.wait.max.ms | 由追随者副本发出的每个提取器请求的最大等待时间。 此值应始终小于replica.lag.time.max.ms,以防止低吞吐量主题的ISR频繁收缩 | int | 500 | 高 | |
replica.high.watermark.checkpoint.interval.ms | 将高水印保存到磁盘的频率 | long | 5000 | 高 | |
replica.lag.time.max.ms | 如果追随者至少没有发送任何提取请求或尚未消耗到领导日志结束偏移量,则领导者将从isr中删除跟随者 | long | 10000 | 高 | |
replica.socket.receive.buffer.bytes | 套接字接收缓冲区用于网络请求 | int | 65536 | 高 | |
replica.socket.timeout.ms | 网络请求的套接字超时。 其值应至少为replica.fetch.wait.max.ms | int | 30000 | 高 | |
request.timeout.ms | 配置控制客户端等待请求响应的最长时间。 如果在超时之前未收到响应,客户端将在必要时重新发送请求,如果重试耗尽则客户端将重新发送请求。 | int | 30000 | 高 | |
socket.receive.buffer.bytes | 套接字服务器套接字的SO_RCVBUF缓冲区。 如果值为-1,则将使用OS默认值。 | int | 102400 | 高 | |
socket.request.max.bytes | 套接字请求中的最大字节数 | int | 104857600 | [1,...] | 高 |
socket.send.buffer.bytes | 套接字服务器套接字的SO_SNDBUF缓冲区。 如果值为-1,则将使用OS默认值。 | int | 102400 | 高 | |
unclean.leader.election.enable | 指示是否启用不在ISR集中的副本作为最后手段选举为领导者,即使这样做可能会导致数据丢失 | boolean | true | 高 | |
zookeeper.connection.timeout.ms | 客户端等待建立与zookeeper的连接的最长时间。 如果未设置,则使用zookeeper.session.timeout.ms中的值 | int | null | 高 | |
zookeeper.session.timeout.ms | Zookeeper会话超时 | int | 6000 | 高 | |
zookeeper.set.acl | Set client to use secure ACLs | boolean | false | 高 | |
broker.id.generation.enable | 在服务器上启用自动broker ID生成。 当启用时,应检查为reserved.broker.max.id配置的值。 | boolean | true | 中 |
更多关于 broker 的配置信息可以在类 kafka.server.KafkaConfig
中找到。
topic 级别的配置有服务器的默认值,同时每个 topic 也可以重写。如果每个 topic 没有重写将使用服务端的默认值。可以通过一个或多个 --config
选项来在 topic 创建时对属性进行设置。下面的例子创建了一个叫 my-topic 的 topic 同时设置了最大消息大小和刷新速率:
> bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 1
--replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1
属性也可以使用alter configs命令在以后更改或设置。下面的例子更新 topic 为 my-topic 的最大消息大小:
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --alter --add-config max.message.bytes=128000
查看 topic 的配置可以通过下面的方式:
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --describe
删除一个配置可以通过下面的方式:
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --alter --delete-config max.message.bytes
以下是主题级配置。 该属性的服务器的默认配置在“服务器默认属性”标题下给出。 给定的服务器默认配置值只适用于主题,如果它没有显式的主题配置覆盖。