gpt4 book ai didi

java - Hadoop 任务的运行时间

转载 作者:可可西里 更新时间:2023-11-01 15:32:01 26 4
gpt4 key购买 nike

我有一个运行 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 的方法。

您可以通过这种方式使用它来检索 map task 持续时间:

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!");
}

关于java - Hadoop 任务的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com