0

我有一个卡夫卡流应用程序,它从几个主题中获取数据,并加入了数据,并把它放在另一个话题。我可以在Kafka Broker的同一台机器上运行Kafka Streams应用程序吗?

卡夫卡配置:

5 kafka brokers 
Kafka Topics - 15 partitions and 3 replication factor. 

注:我在哪里我的卡夫卡经纪人运行相同的机器上运行卡夫卡流应用。

的几百万美元的记录被消费/制造每隔一小时。每当我拿下任何一家卡夫卡经纪商时,它都会进入再平衡状态, 30分钟或有时甚至更多的重新平衡,许多时候它会杀死许多Kafka Streams流程。

回答

0

这在技术上是可以在同一服务器,你的经纪人上运行您卡夫卡Streams应用程序。 但不推荐。两者都需要共享相同的资源,并最终导致争用。

每当我采取任何卡夫卡经纪人下来,进入再平衡

不知道为什么发生这种情况。你使用的是什么版本的Kafka或Streams API?如果您使用的是经纪商0.10.1+,我强烈建议您将您的Streams应用程序升级到0.11(注意,您可以在无代理升级的情况下执行此操作)。

根据您正在分阶段发布的问题的细节,StandbyTask可能有助于延长重新平衡时间。您可以简单配置参数num.standby.replica = 1以启用StandbyTask s。

+0

我只有0.11运行卡夫卡流应用。另外num.standby.replica默认为1。 –

+0

另外我的卡夫卡经纪人在0.11上运行...我在这台机器上安装了64GB RAM,我在每台机器上都有卡夫卡经纪人,动物园管理员+ 15卡夫卡流应用程序。 –

+0

加载服务器和RAM使用情况看起来很正常.. –

0

回答标题中的问题:

从星火/ HDFS背景的人,我觉得这是一种思维的改变,因为你曾经认为这是好事,有你处理数据所在的位置,以利用数据局部性。在这里,经纪人将提供数据位置,但必须将数据发送到Kafka Streams群集进行处理(失去一些好处)。但是,保持它们分开可让您分别管理两个群集。

如果您想到运行高延迟处理作业的集群,它共享数据+处理(例如HDFS + YARN集群),则可以获得“数据所在的进程”,而不是相反。你可以为你的数据处理分配资源 - 但这个想法是,你的处理不依赖于临时数据峰值,但是,从总的数据量(因为它与流一样)。如果数据增长,您的计算将花费更多,您可以分配更多资源,但它们将同时增长。然而,在流媒体应用程序,必要的处理能力不依赖于数据的峰值(和你的低时延需求),而不是总的数据量,所以它是有道理的存储和处理的尺寸和单独管理,因为它们的弹性需求是不基于相同的维度。

除了显而易见的事实,即同时具有数据处理(Kafka代理)和数据处理 - Kafka Streams将更多负载放入节点中,但我们假设这在确定尺寸时已考虑到你的节点。

相关问题