最近,我正在运行一些基准测试,以了解Giraph中的故障转移机制。

其实我很好奇。当工作中的 worker 变慢时,其他 worker 将等待它。后来我在GiraphJob.java中找到了类似的东西:

// Speculative execution doesn't make sense for Giraph
giraphConfiguration.setBoolean("mapred.map.tasks.speculative.execution", false);

有谁知道为什么Giraph中未启用投机执行?

谢谢

最佳答案

首先,让我们想起什么是投机执行。引用自Yahoo's Hadoop tutorial:



如果我对Giraph的理解正确,那么他们就不会使用推测性执行,因为他们使用了自己的迭代计算范式(不适用于该范式)。该范式的灵感来自Google的pregel,它在数据上提供了更多以图节点为中心的 View 。此外,通过检查点来创建容错功能,这意味着每次迭代(也称为超步)会计算每个图节点的所有传入消息,然后将消息分配在这些节点之间。

简而言之,MapReduce并未以其原始方式使用,因此对怪异的推测性执行毫无意义。

关于java - 为什么投机执行对Giraph没有意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26583340/

10-10 15:40