如何设置kafka-connect连接器和任务的JVM堆大小?

时间:2018-05-31 10:18:19

标签: apache-kafka apache-kafka-connect

kafka connect是否在kafka connect进程中启动新连接器及其任务?或者将分叉新的JVM进程。

如果它在kafka connect进程中启动插件,那么我需要通过KAFKA_CONNECT_JVM_HEAP_OPT设置kafka connect JVM堆大小(使用汇合的docker镜像)。那么问题是,如果我启动许多任务或许多连接器,它们将共享JVM堆,因此很难确定kafka connect的堆大小。

如果对于每个连接器,kafka connect在新的JVM进程中启动它们,我该如何为它们设置堆大小?

2 个答案:

答案 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标志

相关问题