kafka connect是否在kafka connect进程中启动新连接器及其任务?或者将分叉新的JVM进程。
如果它在kafka connect进程中启动插件,那么我需要通过KAFKA_CONNECT_JVM_HEAP_OPT
设置kafka connect JVM堆大小(使用汇合的docker镜像)。那么问题是,如果我启动许多任务或许多连接器,它们将共享JVM堆,因此很难确定kafka connect的堆大小。
如果对于每个连接器,kafka connect在新的JVM进程中启动它们,我该如何为它们设置堆大小?
答案 0 :(得分:3)
Kafka Connect对多租户提供基本支持。具体来说,您可以在同一个Connect worker中捆绑多个连接器实例。
每个Connect工作程序始终映射到单个JVM实例。启动新连接器的请求不会导致生成新的JVM实例。但使用相同group.id
的Connect工作者构成Connect工作者群集。然后,连接器任务在Connect集群中的工作程序之间分配。
可以使用以下方法轻松设置Connect worker的堆大小:
export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G"
(此示例使用默认值)
或者,当使用泊坞窗图像时,通过设置:
-e CONNECT_KAFKA_HEAP_OPTS="-Xms256M -Xmx2G"
(此示例再次使用默认值)
Connect worker可以水平缩放。在Connect群集中添加更多工作程序会为部署添加内存和计算资源。如果需要为Connect部署应用更具体和更紧凑的内存预算,则可以选择将特定连接器分组到每个Connect群集,甚至在某些情况下为每个Connect群集部署一个连接器实例。
答案 1 :(得分:0)
所有任务共享一个工作者主机操作系统内的内存空间,无论这个容器是不是真的重要(除了容器内部没有JVM标志的事实,它还有限制)
您可以通过添加更多工作人员为Connect群集“添加内存”。您可以通过增加主题分区,连接器任务,减少轮询/批量以及减少每个工作人员需要读取的总数据量来防止OOM错误。
Connect的堆设置的环境变量是KAFKA_HEAP_OPTS
,您可以从KAFKA_OPTS
添加更多JVM标志