Apache storm 同一台机器的风暴场分组? 我使用storm对字段进行分组 问题是,因为我有多台机器和多个螺栓(显然),所以元组在机器之间移动,我怀疑这会大大降低我的性能 特定字段分组结果是否可能特定于特定机器 或者在字段分组的更多详细信息中,account1对于account2machine3对于account3对于machine1对于每个account对于所有螺栓都是粘性的,依此类推,对于每个account来说,所有螺栓都在一台特定的机器中运行 请注意,一旦第一个bolt处理它在其输出元组中发出的accountid事件,从该点开始的所有bolt都具有accountid意味着我想从该点开始,在accountid上对拓扑结构。(在看到第一个答案后添加以澄清)

Apache storm 同一台机器的风暴场分组? 我使用storm对字段进行分组 问题是,因为我有多台机器和多个螺栓(显然),所以元组在机器之间移动,我怀疑这会大大降低我的性能 特定字段分组结果是否可能特定于特定机器 或者在字段分组的更多详细信息中,account1对于account2machine3对于account3对于machine1对于每个account对于所有螺栓都是粘性的,依此类推,对于每个account来说,所有螺栓都在一台特定的机器中运行 请注意,一旦第一个bolt处理它在其输出元组中发出的accountid事件,从该点开始的所有bolt都具有accountid意味着我想从该点开始,在accountid上对拓扑结构。(在看到第一个答案后添加以澄清),apache-storm,Apache Storm,假设您有3台生产者P1、P2、P3和3台消费者C1、C2、C3以及3台机器,每台机器都承载一个生产者消费者对,即P1-C1。此外,假设您有3个不同的键值a、b、c。此外,假设C1处理键为a的所有元组 通常,键为a的元组可以由所有三个生产者发出。此外,P1还可以发出具有键b或c的元组。因此,您不能使用将所有需要重新分区的数据分组的字段来限制到本地计算机的数据传输 扩展 如果有其他螺栓B1到B3使用C1到C3的数据,并且这些螺栓使用与C1到C3相同的字段分组键(即,Bx可以利用Cx中已经给定的分区)

假设您有3台生产者P1、P2、P3和3台消费者C1、C2、C3以及3台机器,每台机器都承载一个生产者消费者对,即P1-C1。此外,假设您有3个不同的键值
a、b、c
。此外,假设C1处理键为
a
的所有元组

通常,键为
a
的元组可以由所有三个生产者发出。此外,P1还可以发出具有键
b
c
的元组。因此,您不能使用将所有需要重新分区的数据分组的字段来限制到本地计算机的数据传输

扩展

如果有其他螺栓B1到B3使用C1到C3的数据,并且这些螺栓使用与C1到C3相同的字段分组键(即,Bx可以利用Cx中已经给定的分区),则需要确保B1到B3与C1到C3位于同一台机器上,并避免重新分区。通过为Storm提供自定义调度程序,可以实现同一位置。有关示例,请参见此处:


但是,不能使用字段分组连接B1->C1等,因为字段分组与运算符同位和已给定分区的数据无关(只需重新分区该数据)。相反,您需要使用直接分组或自定义分组来确保B1中的所有数据都发送到C1等。

假设您有3个生产者P1、P2、P3和3个消费者C1、C2、C3和3台机器,每台机器都承载一个生产者-消费者对,即P1-C1。此外,假设您有3个不同的键值
a、b、c
。此外,假设C1处理键为
a
的所有元组

通常,键为
a
的元组可以由所有三个生产者发出。此外,P1还可以发出具有键
b
c
的元组。因此,您不能使用将所有需要重新分区的数据分组的字段来限制到本地计算机的数据传输

扩展

如果有其他螺栓B1到B3使用C1到C3的数据,并且这些螺栓使用与C1到C3相同的字段分组键(即,Bx可以利用Cx中已经给定的分区),则需要确保B1到B3与C1到C3位于同一台机器上,并避免重新分区。通过为Storm提供自定义调度程序,可以实现同一位置。有关示例,请参见此处:


但是,不能使用字段分组连接B1->C1等,因为字段分组与运算符同位和已给定分区的数据无关(只需重新分区该数据)。相反,您需要使用直接分组或自定义分组,以确保B1中的所有数据都被发送到C1等。

Local或ShuffleGrouping是否有帮助?

本地或shufflegroup可以提供帮助吗?

我想到的是拥有每一个
(Px,Cx)
在所有机器上配对,在我的例子中,只要
C1
发出其结果,它就会在这个结果中包含
accountid
,这样我就可以从现在开始在这个
accountid
上进行
字段分组,从那时起,这个拓扑中的所有其他生产者和消费者都会有一个
accountid
在它们的输出中,因此在这种情况下,除了第一个输出之外,我在所有输出中都发出了一个
accountid
,并且计划在所有主机上使用所有Px和Cx。通过
storm
实现,这样的事情有可能发生吗?我无法理解。。。您所说的“在所有机器上都有
(Px,Cx)
对”是什么意思?我扩展了我的答案(希望这涵盖了你问题的第二部分——如果我理解正确的话),我想到的是拥有每一个
(Px,Cx)
在所有机器上配对,在我的例子中,只要
C1
发出其结果,它就会在这个结果中包含
accountid
,这样我就可以从现在开始在这个
accountid
上进行
字段分组,从那时起,这个拓扑中的所有其他生产者和消费者都会有一个
accountid
在它们的输出中,因此在这种情况下,除了第一个输出之外,我在所有输出中都发出了一个
accountid
,并且计划在所有主机上使用所有Px和Cx。通过
storm
实现,这样的事情有可能发生吗?我无法理解。。。您所说的“在所有机器上都有
(Px,Cx)
对”是什么意思?我扩展了我的答案(希望这涵盖了你问题的第二部分——如果我理解正确的话)它是确定性的吗?我的意思是,对于某个键
account1
,它是否可能在一个元组上到达
local bolt
,在另一个元组上到达
remote bolt
,或者如果它向
local bolt
发送了一些内容,它是否会保留