如何确定Apache Storm中节点上运行的任务

时间:2016-08-17 01:18:05

标签: grouping apache-storm

我想编写一个CustomGrouping,它将一个螺栓的发射传播到同一节点上运行的另一个螺栓。 localOrShuffleGrouping通过尝试在同一进程中保留元组来部分实现此目的。我想更进一步,并在一个机器级别绑定。这里的主要目的是减少网络延迟,从而提高吞吐量(不受带宽限制)。

我知道您可以通过从TopologyContext调用getThisWorkerTasks()来获取在同一个工作进程中运行的taskID。但是,我找不到让所有taskID在同一节点上运行的方法(包括其他进程的运行)。

1 个答案:

答案 0 :(得分:0)

我认为我们没有API可以做到这一点。这样做的一种方法是下游螺栓将其主机名(或IP)和taskId发送到所有上游螺栓(通过全局流),并且在上游螺栓中使用此信息,您可以确定发送元组的最佳螺栓。要发送主机名,您可以使用tick元组。