如何设置kafka connector和任务的jvm堆大小?

mw3dktmi  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(621)

kafka connect是否在kafka connect进程中启动新连接器及其任务?或者一个新的jvm进程将被分叉。
如果它在kafka connect进程中启动插件,那么我需要通过设置kafka connect jvm堆大小 KAFKA_CONNECT_JVM_HEAP_OPT (使用汇合docker图像)。问题是,如果我启动许多任务或连接器,它们将共享jvm堆,因此很难确定kafka connect的堆大小。
如果对于每个连接器,kafka connect在新的jvm进程中启动它们,那么如何为它们设置堆大小?

lhcgjxsq

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集群部署一个连接器示例。

x7rlezfr

x7rlezfr2#

所有任务在一个worker的主机操作系统中共享内存空间,这是否是一个容器并不重要(除了在容器中的进程上没有jvm标志之外,它还受到更大的限制)
您可以通过添加更多的worker向connect集群“添加内存”。通过增加主题分区、连接器任务、减少轮询/批处理量以及减少每个工作线程需要读取的总数据量,可以防止oom错误。
connect堆设置的环境变量是 KAFKA_HEAP_OPTS ,您可以从中添加更多jvm标志 KAFKA_OPTS

相关问题