kafka connect是否在kafka connect进程中启动新连接器及其任务?或者一个新的jvm进程将被分叉。
如果它在kafka connect进程中启动插件,那么我需要通过设置kafka connect jvm堆大小 KAFKA_CONNECT_JVM_HEAP_OPT
(使用汇合docker图像)。问题是,如果我启动许多任务或连接器,它们将共享jvm堆,因此很难确定kafka connect的堆大小。
如果对于每个连接器,kafka connect在新的jvm进程中启动它们,那么如何为它们设置堆大小?
2条答案
按热度按时间lhcgjxsq1#
kafka connect基本支持多租户。具体来说,您可以在同一个connect worker中绑定多个连接器示例。
每个connect worker总是Map到一个jvm示例。启动新连接器的请求不会产生新的jvm示例。但是把工人和同一个人联系起来
group.id
形成一个连接工人的集群。然后,连接器任务在connect集群中的worker之间分配。可以使用以下方法轻松设置连接辅助进程的堆大小:
export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G"
(本例使用默认值)或者,使用docker图像时,通过设置:
-e CONNECT_KAFKA_HEAP_OPTS="-Xms256M -Xmx2G"
(本例再次使用默认值)连接工人可以水平缩放。在connect集群中添加更多的worker会为部署添加内存和计算资源。如果需要对connect部署应用更具体、更紧凑的内存预算,可以选择将特定的连接器分组到每个connect集群,甚至在某些情况下为每个connect集群部署一个连接器示例。
x7rlezfr2#
所有任务在一个worker的主机操作系统中共享内存空间,这是否是一个容器并不重要(除了在容器中的进程上没有jvm标志之外,它还受到更大的限制)
您可以通过添加更多的worker向connect集群“添加内存”。通过增加主题分区、连接器任务、减少轮询/批处理量以及减少每个工作线程需要读取的总数据量,可以防止oom错误。
connect堆设置的环境变量是
KAFKA_HEAP_OPTS
,您可以从中添加更多jvm标志KAFKA_OPTS