2013-12-12 55 views
0

我試圖讓我的計數器使用全局計數器甚至LOG.info()檢查Maptask.run和ReduceTask.run的運行時間。如何在MapReduce引擎中創建自定義計數器?

在僞分佈式模式下,使用在MapTask.java和ReduceTask.java中修改的buredded mapreduce-core-snapshot.jar來實現我的目標,它可以像我期望的那樣完美工作。

但是,在真正的集羣中,我注入的源代碼不工作,只顯示系統默認的計數器變量。

我認爲僞分佈式和集羣模式之間存在不同的日誌邏輯或安全問題,但我不確定這一點。

有人能讓我知道嗎?

謝謝!

回答

1
Q:How can I make a custom counter 

答:

public static enum MyGroupName { 
    MyGroupName; 
    MYCOUNTTWO; 
}; 

MyMap extends Mapper<..>{ 
map(...){ 
// ... your code 
// get counter 
counter one=context.getCounter(MyGroupName, MyGroupName); 
// set counter 
context.incrCounter(MyGroupName.MyGroupName,TIMEOFTASK); 
} 

} 

+0

謝謝,但不是在我的自定義的MapReduce應用程序,但在內部的MapReduce引擎。 –

相關問題