本文档的参数主要针对是kafka 0.10.0版本。
更多信息可以查看:官方文档
kafka broker 配置
对应kafka安装目录config/server.properties文件的配置
broker.id
每一个Kafka的broker都有一个整数的标识。我们设置broker.id来标识它。默认这个整数是0。这个整数必须是在一个集群中是唯一的,且必须>=0。推荐该值能对应上broker所在的主机名。
port
该值是监听TCP的端口。默认是配置9092。可以设置可用的任意端口,不过需要注意的是如果该值小于1024,Kafka必须以root权限启动。使用root权限启动并不推荐。
zookeeper.connect
连接zk的配置,默认配置localhost:2181。存放broker的元数据。配置值格式是:hostname:port/path,如果多个以分号隔开。
hostname:zk的hostname或者ip地址
port:客户端的与zk通讯的端口
path:一个可选的zk路径参数。kafka集群如果使用了chroot环境,需要设置该参数。如果没有配置,使用root路径。如果path配置了,但是kafka集群没有使用chroot环境,那么该path路径会在broker启动的时候创建。(推荐使用该配置,可以与其他kafka集群共用一个zk,且没有冲突)
log.dirs
Kafka会保留消息到磁盘,并且这些日志片段会按目录区分存放在log.dirs配置的路径,多个配置使用英文逗号隔开。
num.recovery.threads.per.data.dir
kafka可以配置一个线程池,线程池的使用场景如下:
当正常启动的时候,开启每个parition的文档块segment
当失败后重启时,检查parition的文档块
当关闭kafka的时候,清除关闭文档块
默认,每个目录只有一个线程。最好是设置多个线程数,这样在服务器启动或者关闭的时候,都可以并行的进行操作。尤其是当非正常停机后,重启时,如果有大量的分区数,那么启动broker将会花费大量的时间。注意,这个参数是针对每个目录的。比如,num.recovery.threads.per.data.dir设置为8,如果有3个log.dirs路径,那么一共会有24个线程。
auto.create.topics.enable
配置是否开启自动创建topic的权限。默认该值为true。表示kafka会在以下三种情况下自动创建topic:
- 当生产者开始往topic发送消息的时候
- 当消费者开始从topic消费消息的时候
- 当任何客户端请求topic的元数据的时候
num.partitions
topic创建需要多少分区。默认是1。分区数量一旦设置,只能增加,不能减少。
log.retention.ms
日志保留的时间,日志片段被关闭后开始计算,超过该时间,日志将被清理。同log.retention.hours、log.retention.minutes意思。推荐使用log.retention.ms配置。三个都配置,优先使用log.retention.ms
log.retention.bytes
日志保留的字节,超过该配置,日志将被清理。应用在每一个分区。如果log.retention.ms与该配置都有,将会同时起作用。
log.segment.bytes
日志片段的大小设置,默认1GB。超过设置的大小,该日志片段会关闭,再重新创建一个日志片段存放日志。一旦日志片段关闭了,说明该日志片段可以清理了。该值设置过小,可能会频繁关闭文件与创建文件,极大降低磁盘的写性能。
log.roll.hours
日志片段的时间设置。超过设置的时间,该日志片段会关闭,再重新创建一个日志片段存放日志。当该配置与log.segment.bytes都配置的时候,同时起作用。同log.roll.ms,两个都配置,优先使用log.roll.ms。
message.max.bytes
生产者发送给broker消息的最大字节数。默认值是1000000,也就是1MB。生产者发送的消息超过该设置,会被broker拒绝接收,并且会收到broker的错误报告。