簡體   English   中英

Hadoop任務經過的時間

[英]Elapsed Time for a Hadoop Task

我有一個在其上運行YARN的集群。 它具有3個數據節點和1個客戶端節點。 我在客戶端節點上提交了所有作業。 如何獲得特定作業中所有任務的經過時間。

RESTful API( https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/MapredAppMasterRest.html )可以用於此目的。 但是我很想知道是否有任何Java API可以做到這一點。

我可以使用TaskReport類的getStartTime()方法找到所有任務的開始時間。 盡管群集中的節點已使用NTP同步了時間,但我認為使用客戶端系統的當前時間(System.currentTimeMillis())來計算“正在運行”任務的經過時間不是一個好習慣,但是可以接受一些與群集中所有節點相關的延遲,即使在NTP中也是如此。

Job類中,有一個#getTaskReports方法。

您可以通過這種方式來檢索地圖任務的持續時間:

Job job = ...;
job.waitForCompletion(); 

TaskReport[] reports = job.getTaskReports(TaskType.MAP);
for(TaskReport report : reports) { 
   long time = report.getFinishTime() - report.getStartTime();
   System.out.println(report.getTaskId() + " took " + time + " millis!");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM