【详解】Kafka配置文件server.properties

目录

Kafka 配置文件 ​​server.properties​​ 详解

1. 配置文件的位置

2. 配置项概览

3. Broker 基本配置

​​broker.id​​

listen.port

log.dirs

log.retention.hours

log.retention.bytes

4. 网络和请求处理配置

socket.receive.buffer.bytes

socket.send.buffer.bytes

num.network.threads

num.io.threads

5. 分区和副本配置

num.partitions

replication.factor


Kafka 配置文件 ​​server.properties​​ 详解

Kafka 是一个分布式消息队列系统,广泛用于大数据处理和实时数据传输。在 Kafka 集群中,​​server.properties​​ 文件是每个 broker( broker 即 Kafka 服务器节点)都需要配置的文件,它包含了 Kafka 服务器的所有配置选项。本文将详细介绍 ​​server.properties​​ 文件中的一些关键配置项,并提供最佳实践建议。

1. 配置文件的位置

在 Kafka 安装目录下,​​server.properties​​ 文件通常位于 ​​config​​ 目录中。每个 broker 都需要根据自己的需求和环境来定制这个文件。

2. 配置项概览

​server.properties​​ 文件中的配置项可以分为几大类:

  • Broker 基本配置:包括 broker 的 ID、监听端口、日志目录等。
  • 网络和请求处理配置:控制客户端如何连接到 broker,以及 broker 如何处理请求。
  • 日志和存储配置:管理消息日志的创建、存储和清理。
  • 分区和副本配置:控制分区和副本的行为。
  • 高级配置:包括性能优化、安全配置等。

3. Broker 基本配置

​broker.id​
  • 含义:每个 broker 都需要一个唯一的 ID。
  • 格式:一个正整数。
  • 默认值:无。
  • 建议:设置一个唯一的正整数,例如 ​​0​​ 到 ​​9​​ 之间的数字。
listen.port
  • 含义:broker 监听的客户端连接端口。
  • 格式:一个整数。
  • 默认值:​​9092​​。
  • 建议:除非有特殊需求,否则不需要更改。
log.dirs
  • 含义:消息日志的存储目录。
  • 格式:一个或多个目录路径,用逗号分隔。
  • 默认值:​​/tmp/kafka-logs​​。
  • 建议:根据存储需求和磁盘性能,设置多个目录,以便均衡负载。
log.retention.hours
  • 含义:消息日志的保留时间(以小时为单位)。
  • 格式:一个正整数。
  • 默认值:​​168​​(即一周)。
  • 建议:根据数据保留需求调整,但要注意与 ​​log.retention.bytes​​ 的平衡。
log.retention.bytes
  • 含义:消息日志的大小上限(以字节为单位)。
  • 格式:一个正整数。
  • 默认值:​​1073741824​​(即 1GB)。
  • 建议:根据存储空间和吞吐量需求调整。

4. 网络和请求处理配置

socket.receive.buffer.bytes
  • 含义:服务器接收数据的 socket 缓冲区大小。
  • 格式:一个正整数。
  • 默认值:​​65536​​(即 64KB)。
  • 建议:根据网络性能调整,通常不需要超过 1MB。
socket.send.buffer.bytes
  • 含义:服务器发送数据的 socket 缓冲区大小。
  • 格式:一个正整数。
  • 默认值:​​102400​​(即 100KB)。
  • 建议:根据网络性能调整,通常不需要超过 1MB。
num.network.threads
  • 含义:处理网络请求的线程数。
  • 格式:一个正整数。
  • 默认值:​​8​​。
  • 建议:根据 broker 的 CPU 核数调整,通常设置为 CPU 核数。
num.io.threads
  • 含义:处理磁盘 I/O 的线程数。
  • 格式:一个正整数。
  • 默认值:​​8​​。
  • 建议:根据磁盘性能调整,通常设置为磁盘数量加上 CPU 核数。

5. 分区和副本配置

num.partitions
  • 含义:每个主题的默认分区数。
  • 格式:一个正整数。
  • 默认值:​​1​​。
  • 建议:根据吞吐量和并行处理需求调整,通常设置为 1 到 20 的范围。
replication.factor
  • 含义:每个分区的副本数。
  • 格式:一个正整数在实际应用场景中,​​server.properties​​是Kafka broker的主要配置文件,它包含了broker的各个配置项。下面是一个示例代码,展示了如何配置Kafka server.properties文件的一些关键设置:
# broker id (必须唯一)
broker.id=1

#  broker hostname (用于外部通信)
host.name=localhost

# 监听的端口 (默认的Kafka端口)
port=9092

# 是否允许自动创建主题 (如果设置为true,则当客户端尝试创建一个不存在的主题时,Kafka broker会自动创建它)
auto.create.topics.enable=true

# 主题的分区数 (默认值是1)
num.partitions=3

# 主题的分区副本数 (默认值是1)
num.replicas=2

# 主题的分区分配策略 (默认值是"org.apache.kafka.clients.consumer.RangeAssignor")
partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor

# 日志目录 (Kafka将数据存储在这里)
log.dirs=/var/lib/kafka/data

# 日志文件大小 (默认值是1G)
log.segment.bytes=1073741824

# 日志保留策略 (默认是删除旧的日志段)
log.retention.hours=168

# 日志清理策略 (默认是删除)
log.cleanup.policy=delete

# 是否启用日志压缩 (如果启用,Kafka将使用Snappy或LZ4来压缩日志)
# compression.type=snappy
# compression.type=lz4

# 是否启用消息的再平衡 (如果启用,当分区副本数发生变化时,Kafka会尝试重新平衡分区)
# enable.replica.rebalancing=true

# 是否启用删除标记清理 (如果启用,Kafka会清理那些已经被删除的日志段对应的删除标记)
# delete.retention.ms=86400000

# 是否启用日志清理器 (如果启用,Kafka会定期运行日志清理器来清理过时的日志)
# log.cleaner.enable=true

# 是否启用日志索引 (如果启用,Kafka会为每个日志段创建一个索引文件来加速日志的检索)
# log.index.enable=true

# 是否启用日志索引压缩 (如果启用,Kafka会压缩索引文件来减少存储空间)
# log.index.interval.bytes=4096

# 是否启用日志索引清理 (如果启用,Kafka会定期清理过时的索引文件)
# log.index.gc.interval.ms=300000

# 是否启用日志清理器压缩 (如果启用,Kafka会在日志清理器运行时压缩日志)
# log.cleaner.compression.level=1

# 是否启用日志清理器线程 (如果启用,Kafka会使用多个线程来并行清理日志)
# log.cleaner.threads=1

# 是否启用控制器自动选举 (如果启用,当Kafka集群中的broker崩溃或新加入时,会自动选举出一个控制器)
# enable.controller.选举=true

# 是否启用日志同步到磁盘 (如果启用,Kafka会在每次写操作后将日志同步到磁盘)
# log.flush.interval.messages=10000
# log.flush.interval.ms=1000

# 是否启用日志预分配 (如果启用,Kafka会在启动时预分配日志段)
# preallocate.logs=true

# 是否启用日志清除 (如果启用,Kafka会在日志清理时清除过时的日志)
# log.purge.enable=true

# 是否启用日志清理器进度检查 (如果启用,Kafka会定期检查日志清理器的进度)
# log.cleaner.checkpoint.interval.ms=300000

# 是否启用日志清理器进度快照 (如果启用,Kafka会在日志清理器完成时创建一个进度快照)
# log.cleaner.enable.snapshots=true

# 是否启用日志清理器快照清理 (如果启用,Kafka会定期清理过时的快照)
# log.cleaner.snapshot.retention.bytes=1073741824

# 是否启用日志清理器快在Apache Kafka中,`server.properties`文件是Kafka broker的主要配置文件。它包含了Kafka broker的各个配置选项。下面是一个基本的`server.properties`文件的内容,以及每个配置项的简要说明:

```properties
# broker id
broker.id=0

# 服务器监听地址
listeners=PLAINTEXT://:9092

# 外部访问地址
advertised.listeners=PLAINTEXT://your-host-name:9092

# 代理的日志目录
log.dirs=/path/to/kafka/logs

# 日志文件大小,超过这个值将创建新的日志文件
log.segment.bytes=1073741824

# 日志文件保留的最小数量
log.retention.hours=168

# 消息保留的最大时间
message.max.bytes=1000000

# 压缩类型
compression.type=none

# 是否允许自动创建分区
auto.create.topics.enable=true

# 主题的分区数
num.partitions=1

# 每个分区的副本数
num.replica.fails=1

# 控制器选举超时时间
controller.选举.timeout.ms=3000

# 控制器重试间隔
controller.rebalance.backoff.ms=1000

# 是否允许客户端以任何顺序发送消息
# 设置为true可以提高性能,但可能违反顺序
allow.message.ordering=false

# 是否允许客户端在发送消息时指定键
# 这通常用于保持消息的顺序
# 设置为true可以提高性能,但可能违反顺序
enable.idempotence=false

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.enable=false

# 日志清理的频率
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.interval.mins=30

# 日志清理的线程数
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.threads=1

# 是否启用日志压缩
# 设置为true可以节省磁盘空间,但会增加延迟
log.retention.compress=true

# 是否启用日志索引
# 设置为true可以提高性能,但会占用更多的内存
log.index.interval.bytes=4096

# 是否启用日志预分配
# 设置为true可以减少日志分割时的磁盘压力
preallocate.logs.enable=true

# 是否启用日志删除
# 设置为true可以节省磁盘空间,但会增加延迟
delete.records.enable=true

# 是否启用日志同步
# 设置为true可以确保日志数据同步到磁盘,但会降低性能
sync.log.enable=true

# 是否启用日志滚动
# 设置为true可以在日志达到一定大小后滚动到新文件
log.roll.enable=true

# 日志滚动的大小
# 设置为true可以在日志达到一定大小后滚动到新文件
log.roll.size.bytes=1073741824

# 日志滚动的时间间隔
# 设置为true可以在日志达到一定时间后滚动到新文件
log.roll.time.millis=604800000

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.policy=delete

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.dedupe.buffer.size=134217728

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.max.compaction.lag.ms=9223372036854775807

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.min.cleanable.ratio=0.0

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.min.compaction.lag.ms=0

# 是否启用日志清理
# 设置为true可以节省磁盘空间,但会增加延迟
log.cleaner.min.duration.ms=6000
application.propertieskafka配置可以根据需要进行设置。以下是一些常见的配置参数及其说明: 1. broker.id:Kafka服务器的唯一标识符,集群模式下必须唯一且不可更改。 2. listeners:Kafka服务器的监听地址和端口。 3. log.dirs:Kafka消息存储的文件路径,可以配置多个路径,Kafka会选择拥有最少数据分区的路径进行存储。 4. num.recovery.threads.per.data.dir:启动或关闭Kafka时,日志需要启动或恢复的线程数量。 5. num.network.threads:处理网络请求的最大线程数。 6. num.io.threads:处理磁盘I/O的线程数。 7. background.threads:后台线程数。 8. queued.max.requests:等待IO线程处理的请求队列最大数。 9. socket.send.buffer.bytes:socket的发送缓冲区大小。 10. socket.receive.buffer.bytes:socket的接收缓冲区大小。 11. socket.request.max.bytes:socket请求的最大字节数。 12. num.partitions:每个topic的分区个数。 13. auto.create.topics.enable:是否允许自动创建topic。 14. default.replication.factor:一个topic默认分区的副本个数。 15. message.max.bytes:消息体的最大大小。 以上是一些常见的Kafka配置参数,可以根据实际需求进行配置。 #### 引用[.reference_title] - *1* [apache kafka系列之server.properties配置文件参数说明](https://blog.csdn.net/lizhitao/article/details/25667831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [02-Kafkaserver.properties核心配置详解](https://blog.csdn.net/qq_39234967/article/details/126451936)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛肉胡辣汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值