我用以下形式开发生产卡夫卡环境:3个ZK服务器、3个卡夫卡代理和两个卡夫卡连接。我把tmp文件和kafka主文件夹放在一起。我在远程ubuntu环境中运行它,但不在docker中运行。
当我操作我的kafka操作时,我遇到了一个错误,通知我的磁盘消耗过多。我检查了我的kafka tmp文件夹,它的大小几乎是我磁盘大小的2/3,这关闭了我的kafka集群。
我检查了每个kafka log_folder,发现了这个:
- 1号工人的25
connect_offset
,每个21MB - 来自2号工人的25个
connect_offset2
,每个21MB - 来自1号工人的25个
connect_status
,每个21MB - 每个21MB的2号工人提供25个
connect_status2
- 两个工人各50个
__consumer_offset
,每个21MB - 每个主题的主题偏移量为21Mb,我有2个主题,所以我有6个主题偏移量
问题是__consumer_offset的数量比其他偏移消耗了更多的磁盘,而我的kafka_config无法处理它
broker.id=101
port=
num.partitions=3
offsets.topic.replication.factor=3
log.cleaner.enable=true
log.cleanup.policy=delete
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=60000
message.max.bytes=1073741824
zookeeper.connection.timeout.ms=7200000
session.time.out.ms=30000
delete.topic.enable=true
对于每个主题,这是配置:
kafka-topics.sh -create --zookeeper ... --replication-factor 3 --partitions 3 --topic ... --config cleanup.policy=delete --config retention.ms=86400000 --config min.insync.replicas=2 --config compression.type=gzip
像这样的连接配置(连接配置共享相同的配置,除了端口、偏移量和状态配置。(:
key.converter.schemas.enable=true
value.converter.schemas.enable=true
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
offset.storage.topic=connect-offsets
offset.storage.replication.factor=3
config.storage.topic=connect-configs
config.storage.replication.factor=3
status.storage.topic=connect-status
status.storage.replication.factor=3
offset.flush.timeout.ms=300000
connector.client.config.override.policy=All
producer.max.request.size=1073741824
producer.ack=all
producer.enable.idempotence=true
consumer.max.partition.fetch.bytes=1073741824
consumer.auto.offset.reset=latest
consumer.enable.auto.commit=true
consumer.max.poll.interval.ms=5000000
很明显,根据一些文档,Kafka不需要大的磁盘空间(记录的最大tmp是36GB(。
"@21MB"是什么意思?您的log.segment.bytes
设置为1GB。。。
首先,永远不要将/tmp
用于持久存储。并且不要将/home
用于服务器数据。对于服务器数据以及/var
+/var/logs
,始终使用单独的分区/磁盘。
其次,您有2个Connect集群。使用相同的3个主题和相同的group.id
,那么您就有了1个Distribtued Cluster,您就不用再拥有3个额外的主题了。
最后,
__consumer_offset的数量比其他偏移消耗更多的磁盘
嗯,是的。所有消费者群体都将他们的补偿存储在那里。这将是迄今为止最大的内部主题,取决于您的offsets.retention.minutes
Kafka不需要大的磁盘空间
当您开始时,它不会
我见过具有数百TB存储的集群
如果你观看大公司的卡夫卡峰会演讲,他们每秒发送GB的活动(参考Netflix、Spotify、优步等(
卡夫卡在生产中
- Apache
- 汇流