测量Hadoop中每个节点的整个映射阶段的持续时间

时间:2014-04-22 09:57:03

标签: hadoop time mapreduce

目前,我知道jobtracker可以向您显示每个地图任务所花费的时间,但我想要的不是每个地图任务,而是自第一个地图任务到最后一个任务所需的时间群集中的strong>一个节点。 例如:1地图需要2秒,但是当你有100个地图任务时,我怎样才能测量每个节点的时间而不是所有地图都可以并行执行?

是否可以知道每个节点执行整个地图阶段(所有地图任务)所需的时间?

1 个答案:

答案 0 :(得分:5)

您可以使用用户定义的Java计数器来导出每个节点的所有Mapper所花费的时间。

在Mapper实现中,您需要执行以下操作, 1.覆盖设置并记录开始时间。 long startTime = System.currentTimeMillis(); 2.覆盖清理方法

long endTime = System.currentTimeMillis(); String hostname = java.net.InetAddress.getLocalHost().getHostName(). context.getCounters(hostname,"time consumed").increment(endTime - startTime);