Kafka broker配置说明

各种组件安装

2019-03-24

47

0

技术:kafka

运行环境:centos6.8

demo功能:提供一个kafka broker配置说明

调优kafka broker配置

broker.id=4
listeners=PLAINTEXT://127.0.2.1:9092
zookeeper.connect=127.0.0.1:2181/kafka-cluster1
zookeeper.connection.timeout.ms=6000
zookeeper.session.timeout.ms=6000
port=9092
log.dir=/data/kafka
default.replication.factor=2
num.partitions=6

background.threads=10
compression.type=producer
delete.topic.enable=true
auto.create.topics.enable=true
auto.leader.rebalance.enable=true
leader.imbalance.check.interval.seconds=300
leader.imbalance.per.broker.percentage=10
unclean.leader.election.enable=true
group.max.session.timeout.ms=30000

log.flush.offset.checkpoint.interval.ms=60000
log.retention.bytes=750000000000
log.retention.hours=6
log.cleaner.backoff.ms=15000
log.cleaner.enable=true
log.cleaner.threads=1
log.cleanup.policy=delete
log.retention.check.interval.ms=300000
log.roll.hours=24
log.segment.bytes=1073741824
log.index.interval.bytes=1048576
log.index.size.max.bytes=10485760
log.preallocate=false

#message.max.bytes=1000012
message.max.bytes=104857600
num.io.threads=8
num.network.threads=8
queued.max.requests=1000
max.connections.per.ip=2048

min.insync.replicas=1
num.replica.fetchers=1
#replica.fetch.max.bytes=1048576
replica.fetch.max.bytes=157286400
replica.fetch.wait.max.ms=500
replica.lag.time.max.ms=10000
replica.fetch.backoff.ms=1000
offsets.commit.required.acks=-1
offsets.commit.timeout.ms=5000
offsets.topic.num.partitions=50
offsets.topic.replication.factor=3

重要配置说明

##[important]
##broker ID,cluster唯一标识,数字类型
##此值可以不指定,有集群自动创建(由当前集群现有的brokerID + 1)。
##默认值为-1
broker.id=5
#broker.id.generation.enable=true
##zookeeper连接地址
zookeeper.connect=10.0.3.70:2181,10.0.3.71:2181,10.0.4.70:2181/kafka
zookeeper.connection.timeout.ms=6000
zookeeper.session.timeout.ms=6000
##broker绑定的ip和端口
##不能与host.name同时配置
listeners=PLAINTEXT://10.0.3.79:9092
port=9092
##broker数据文件保存的目录,建议数据目录使用单独的高性能磁盘驱动
##默认值为:/tmp/kafka-logs
log.dir=/data/kafka
##自动创建的topics所具有的replication个数
default.replication.factor=2
##每个topic默认的partion个数,默认值为1
##建议此值有producer自主决定,因为涉及到partition sharding的设置
num.partitions=1

topics配置

##[topics]
##后台线程的个数,后台线程用于leader平衡、consumer活性检测
##日志文件切分或回收等
##默认为10
background.threads=10
##设置指定topic的数据压缩类型,
##允许值“producer”、“gzip”、“snappy”、“lz4”
##“producer”值表示压缩算法由producer端指定
##默认值为“producer”
compression.type=producer
##是否允许删除topic
##无论是否关闭,我们总是可以使用admin工具删除topic
delete.topic.enable=false
##是否允许自动创建topic,如果producer端指定的topic尚未被创建时。
##基于admin管控,可以设置为false。
##默认为true
auto.create.topics.enable=true
##是否开启partition leaders自动rebalance机制
##后台线程将会间歇性的检测并适时触发“rebalance”
##默认为true
auto.leader.rebalance.enable=true
##controller检测partition均衡性的频率,单位秒
##默认值为300
leader.imbalance.check.interval.seconds=300
##允许每个broker上失衡leader的占比。
##如果某个broker失衡leader的占比超过此值,controller将会触发rebalance。
##默认为10,百分比
leader.imbalance.per.broker.percentage=10
##是否开启将不在ISR列表的replicas选举为leader,这是最后的手段(即ISR列表中的replicas都已不可达)
##尽管这样可能会导致数据丢失。
unclean.leader.election.enable=true
##consumers的会话过期时间:
##超时后将会认为此cusumers已下线,其上相应的partiton消费将会转发给此group的其他consumers
group.max.session.timeout.ms=30000

日志配置

##[log]
##log partition上累积N条消息后进行磁盘刷新
##默认值为:9223372036854775807
##默认情况下,磁盘文件刷新时机由OS确定,broker不主动刷盘
#log.flush.interval.messages=100000
##topic中消息刷盘的时间间隔,在此之前,消息将会保存在内存中
##如果不设置此值,将会有“log.flush.scheduler.interval.ms”值决定。
##默认值:null
#log.flush.interval.ms=1000
##默认值:9223372036854775807
#log.flush.scheduler.interval.ms=1000
##默认值:
log.flush.offset.checkpoint.interval.ms=60000
##log数据保留的最大尺寸,超过此值后,历史log数据将会被删除
##默认为-1,表示log数据“不按照尺寸”方式评估
log.retention.bytes=-1
##log数据保留的小时数,默认为168(一周)
log.retention.hours=168
##当没有logs需要清理时,后台线程sleep的时间
log.cleaner.backoff.ms=15000
##开启log清理
##如果不开启,log文件(数量、尺寸)将会一直增加,不会被删除
log.cleaner.enable=true
log.cleaner.threads=1
##日志清理的策略:delete、compact;默认值为delete
##delete:删除历史log文件
##compact:合并压缩,即将相同的key的消息进行compact,相同key的多条消息值保留最近一条。(非compression)
log.cleanup.policy=delete
##log超期(超尺寸)检测的时间间隔,以判断segment是否可以被删除(加入删除列表)
log.retention.check.interval.ms=300000
##log片段切分的时间间隔(roll),默认值为168
log.roll.hours=168
##单个log片段的大小,超过此值将会被roll,默认值为1G
log.segment.bytes=1073741824
##间隔多少字节后,在offset index文件中添加一个条目
##此值越小,index文件越大,根据offset定位log文件越快
##默认值为4096,此处调整为1M
log.index.interval.bytes=1048576
##offset index文件的最大尺寸,超出后将会roll out
##默认值10M
log.index.size.max.bytes=10485760
##log片段文件预分配,*linux系统不需要,window平台上建议开启。
log.preallocate=false

IO配置 & 副本配置

##[io]
##broker允许接收的单条消息的最大尺寸
message.max.bytes=1000012
##用于执行网络请求的线程数,通常用于磁盘IO 读写操作,并服务于请求。
##建议与磁盘数保持一致
num.io.threads=8
##用于接收、处理Client请求的网络线程数,NIO多线程、selector模式
##建议与CPU个数保持一致,建议评估Client并发数量
##默认值为3
num.network.threads=8
##当queued消息数量达到此值后,network线程将会阻塞(直到queue空闲)
##producer端并发量、消息量的控制,broker的保护机制
##queued的消息:producer/consumer发送的、尚未被执行的消息列表
##默认值为500
queued.max.requests=1000
##通过clientID、group名称标记的任何consumer,所允许的每秒fetch消息的最大尺寸
##默认值为:9223372036854775807,表示不限制
##此值可以用来流量控制
#quota.consumer.default=9223372036854775807
#quota.producer.default=9223372036854775807
##每个IP client允许建立的连接数,默认值为:2147483647 (几乎不限制)
max.connections.per.ip=2048

副本配置
##[replicas]
##当需要满足producer端“required.acks=-1”的请求时,
##ISR列表中replicas的最小个数。(in-sync replicas)
##默认值为1(即leader)
min.insync.replicas=1
##replicas从leader中同步(fetch)数据的线程数量,建议为1
##增加此值可以提高follower broker的并发度
num.replica.fetchers=1
replica.fetch.max.bytes=1048576
replica.fetch.wait.max.ms=500
##如果follower在此时间内没有发送任何fetch请求、或者不能与leaders跟进
##leader将会把此follower从ISR列表中移除。(直到此follower跟进为止)
replica.lag.time.max.ms=10000
##当follower fetch数据时遇到异常,等待的时间间隔(重试)
replica.fetch.backoff.ms=1000
##offset消息提交需要的acks,默认为-1(all),且决不能覆盖
##offset请求是一种特殊的请求,它必须在相应的partiton所在ISR列表中全部提交确认后
offsets.commit.required.acks=-1
##offset请求提交将会被delay,知道offset topic的所有replicas收到提交或者超时
##类似于producer端的请求超时。
offsets.commit.timeout.ms=5000
##offset topic的partitions个数,属于broker内部机制,建议不要调整此值
offsets.topic.num.partitions=50
offsets.topic.replication.factor=3

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think