我想配置Kafka Connect将最大数量的记录写入HDFS(我每天需要写大约100B条记录,每条记录大约1.2Kb)。
我有配备256GB RAM的Kafka服务器。
我正在尝试配置以下设置:
flush.size=305000
tasks.max=215
带有215个分区的Kafka主题。 通过此设置,我得到了以下例外:
Java堆空间OutOfMemoryException
并带有:
flush.size=305000
tasks.max=10
对于带有10个分区的Kafka主题,此方法工作正常,但在10分钟内仅写入约40-50M条记录,采用这种配置,我的时滞非常大(约1.5B)。
如何计算Kafka connect的最大配置?
谢谢。
答案 0 :(得分:1)
如果您未将Java堆大小设置为大于默认值,则Kafka服务器RAM的大小无关紧要。
Kafka Connect也是如此...这将有助于解决OOM错误
如果您有10个分区,则要以分布式模式(而不是独立运行)运行10个任务。这样可以扩展使用者流程,如果您希望它更快地运行,请在10台单独的机器(或几台机器上使用Docker容器)上运行
我知道您可以计算在给定刷新中可以获取的最大消息量的唯一方法是使用JMX监视连接过程来监视已使用的堆空间。每天100B记录10个分区中的记录很多,但是您可能希望增加该值