2013-07-07 38 views
2

在Hadoop 1.0.1中,如何使用API​​來查找reduce任務中每個階段的權重?Hadoop - 減少階段的權重

更清楚的是,我正在嘗試查看混排階段,排序階段和合並階段採取了多少減少任務。

回答

1

我認爲實現此目的的一種方法可能是監視Shuffle和Sort階段所花費的任務和時間所花費的總時間。您可以使用TaskStatus類提供的以下方法來查找:

getStartTime():獲取任務的開始時間。

getFinishTime():獲取任務完成時間。如果之前沒有設置shuffleFinishTime和sortFinishTime,則將它們設置爲finishTime。在心跳間隔中完成洗牌,分類和完成時的情況並不單獨報告。如果任務狀態爲TaskStatus.FAILED,則表示任務失敗時的結束時間。

​​:獲取任務的洗牌完成時間。如果由於在同一心跳間隔內結束的隨機/排序/結束階段而未設置隨機播放結束時間,則會設置下一個階段的結束時間,即排序或任務完成時間。

getSortFinishTime():獲取任務的排序完成時間。如果排序完成時間由於排序而沒有設置,並且在相同的心跳間隔內減少相位整理,則設置完成時間時設置爲結束時間。

另一種方法可以是使用Counters

請讓我知道這是否回答您的查詢。謝謝。

+0

是的,這正是我所需要的。謝謝! – MihaelaO

+0

很高興能有所幫助。不用謝。 – Tariq

+0

Map階段有不同的處理階段嗎?更明確的是,Hadoop是否區分執行map函數的階段和重新排序結果的階段?如果是這樣,是否有辦法獲得這些地圖階段的權重? – MihaelaO