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

Xia*_*ang 3 apache-kafka apache-kafka-connect

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

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

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

Kon*_*sis 5

Kafka Connect对多租户提供基本支持。具体来说,您可以在同一个Connect worker中捆绑多个连接器实例。

每个Connect worker始终映射到单个JVM实例。启动新连接器的请求不会导致产生新的JVM实例。但是Connect工作者具有相同group.id的Connect工作者集群。然后,将连接器任务分配给Connect群集中的工作线程。

可以使用以下命令轻松设置Connect worker的堆大小:

export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G" (此示例使用默认值)

或者,当使用docker映像时,通过设置:

-e CONNECT_KAFKA_HEAP_OPTS="-Xms256M -Xmx2G" (同样,此示例使用默认值)

连接工人可以水平缩放。在Connect群集中添加更多工作线程会为您的部署添加内存和计算资源。如果您需要为Connect部署应用更加具体且紧张的内存预算,则可以选择将特定的连接器分组到每个Connect集群,甚至在某些情况下,每个Connect集群部署一个连接器实例。


cri*_*007 3

所有任务共享一个工作线程的主机操作系统内的内存空间,无论它是否是一个容器并不重要(除了容器内进程上没有 JVM 标志这一事实之外,它还受到进一步的限制)

您可以通过添加更多工作线程来向 Connect 集群“添加内存”。您可以通过增加主题分区、连接器任务、减少轮询/批处理量以及减少每个工作人员需要读取的数据总量来防止 OOM 错误。

Connect 堆设置的环境变量是KAFKA_HEAP_OPTS,您可以添加更多 JVM 标志KAFKA_OPTS