[英]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.