bolt-execute方法中的Storm-Computation时间

时间:2017-08-08 11:30:05

标签: apache-storm

我一直在用Storm测试我们的实验项目。 当我使用Storm bolt执行一些计算任务时, 我发现在Storm之外运行计算所花费的时间大约是Storm bolt execute()方法中的10倍。

我还在bolt的execute()方法中尝试了一小段代码:

Random rd = new Random(System.currentTimeMillis());
double  count =rd.nextDouble();
for( int i=0;i <50000000;i++ ) {
    count *= rd.nextDouble();
}

上面的代码花了大约1000毫秒来完成Storm内部,而在Storm环境之外只花了大约10毫秒才完成。

对于Storm bolt来说,这是一项重要的计算任务吗?

2 个答案:

答案 0 :(得分:0)

我认为你错过了这一点。你能想出一个在一个节点上运行得更好的试验吗?当然,但你永远不会用它。如果你的计算在一个节点上运行正常,那么不要使用Storm,因为它太过分了。

Storm是一个分布式实时计算系统。如果您需要使用许多计算机以实时和可扩展的容错方式处理大量数据,那么请使用Storm。

答案 1 :(得分:0)

啊,这是我的一个愚蠢的错误,execute()方法中的运行时间对于简单的计算是好的。

但是我们在execute()中进行的真正处理仍然比Storm外部慢几倍。在这个处理过程中,我们实际上调用了JNI方法,如果这就是原因。