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

举报
皮牙子抓饭 发表于 2024/12/15 22:49:47 2024/12/15
【摘要】 Kafka 配置文件 ​​server.properties​​ 详解Kafka 是一个分布式消息队列系统,广泛用于大数据处理和实时数据传输。在 Kafka 集群中,​​server.properties​​ 文件是每个 broker( broker 即 Kafka 服务器节点)都需要配置的文件,它包含了 Kafka 服务器的所有配置选项。本文将详细介绍 ​​server.propertie...

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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。