最近我運行一些基準來了解Giraph中的故障轉移機制。爲什麼投機性執行對Giraph沒有意義?
其實我很好奇;當工作中的工人變得更慢時,其他工人就會等待它。後來我發現在GiraphJob.java
是這樣的:
// Speculative execution doesn't make sense for Giraph
giraphConfiguration.setBoolean("mapred.map.tasks.speculative.execution", false);
有誰知道爲什麼推測執行不Giraph啓用?
謝謝
它是有道理的,在BSP的舊文獻中(特別是工程量測),推薦推測執行。爲什麼?因爲一個落後的任務可以完全延遲整個超級步驟(與計算回滾相同)。這是Giraph的消息模型的一個限制,沒有別的。 – 2014-10-27 10:49:33
我只是想確認一下。在這種情況下,迭代計算意味着:Giraph必須迭代地處理每個頂點。因此,如果在Giraph中啓動投機性執行,那麼它會違反Giraph的規則,處理事情不合適。對?如果啓用投機執行,會發生什麼情況?會導致不一致嗎? – Algorithman 2014-10-27 11:01:21
@Vincentius:我不確定我是否正確。但請注意,Giraph不是迭代地處理頂點,而是其算法步驟。對於這些步驟中的每一個步驟,圖表中的每個節點(簡單地說)分析它是傳入的消息。這對每個節點都是異步並行完成的。由於Giraph無法使用它,啓用投機執行根本沒有意義。 – 2014-10-28 07:43:58