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