我有一个Kafka集群有3台机器。一个主题有6个分区(每台机器2个分区)。当我启动一个消费者应用程序时,它有6个消费者线程,属于一个组。我知道一个使用者线程将被分配一个分区。我想知道的是:使用者线程的任务将在分区所在的机器上运行?或者将在启动应用程序的机器上运行?
cigdeys31#
您所讨论的模型听起来像我们使用apachespark的模型,其中处理数据的worker运行在worker节点上,由开发人员/用户机器上的驱动程序应用程序协调。Kafka不是这样工作的。kafka代理独立于kafka应用程序,在kafka应用程序中,使用者运行kafka从主题/分区获取消息。启动用户应用程序(即应用程序运行的机器)的位置;它不会在代理节点上运行。具有相关使用者的应用程序将连接到“远程”代理节点以获取消息。同样,您可以在代理节点上运行kafka应用程序,就像另一个jvm进程一样,但这不是您上面描述的模型(正如我所说的,它更像apachespark)
1条答案
按热度按时间cigdeys31#
您所讨论的模型听起来像我们使用apachespark的模型,其中处理数据的worker运行在worker节点上,由开发人员/用户机器上的驱动程序应用程序协调。Kafka不是这样工作的。kafka代理独立于kafka应用程序,在kafka应用程序中,使用者运行kafka从主题/分区获取消息。启动用户应用程序(即应用程序运行的机器)的位置;它不会在代理节点上运行。具有相关使用者的应用程序将连接到“远程”代理节点以获取消息。同样,您可以在代理节点上运行kafka应用程序,就像另一个jvm进程一样,但这不是您上面描述的模型(正如我所说的,它更像apachespark)