2016-05-17 44 views

回答

1

如果您需要精確的測量 - 您可以使用btrace,通過mapreduce.{map,reduce}.java.opts將它作爲javaagent添加到您的任務 - 然後編寫腳本來測量您喜歡的任何內容。 btrace腳本示例爲here

還有HTrace - 這可能也是有幫助的。

+0

我有HTrace工作,你用過它嗎?我想知道如何劃分我需要的信息.. – AlexandruC

1

一個粗略的估計可能是創建自定義計數器。對於mapper和reducer,您可以在mapper(或reducer)開始處理和結束時收集時間戳。從開始和結束時間戳開始,計算並將其添加到自定義計數器,即映射器將添加到MAPPER_RUNNING_TIME,並將縮減器添加到REDUCER_RUNNING_TIME(或任何您想要給它的名稱)。執行完成後,分別從MILLIS_MAPSMILLIS_REDUCES中減去計數器的總計值。您可能需要查看Hadoop源代碼,以確認是否將登臺時間包含在MILLIS_MAPSMILLIS_REDUCES中。有了這個估計,你需要考慮到這些任務正在同時執行,所以時間將會相當全面(或者對所有映射器和縮減器進行彙總)。

我個人沒有這樣做,但我認爲這個解決方案可以工作,除非你找到更好的解決方案。

+0

您提出的解決方案聽起來不錯。我發現MILLIS_MAPS =所有地圖花費的總時間(毫秒)。我想知道這是否也包括隊列等待時間。這個階段意味着什麼。 – AlexandruC

+0

@AlexandruC。不幸的是,我無法幫助你進一步解釋,因爲它需要我通過源代碼並搜索它是如何計算的,這可能相當耗時。 – Serhiy

+0

你沒有必要這樣做。我會做的。 – AlexandruC

相關問題