Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Incomplete
-
0.20.2
-
None
-
None
Description
JvmMetrics has three tags: hostName, processName, and sessionId. For processes such as tasktracker/jobtracker/namenode/datanode which there is only one of on each host, these tags are fine. But for process names such as "MAP" and "REDUCE", since there might be multiple jvms running map/reduce tasks, we might end up with multiple set of metrics which all have the same tags, and no way to find out which jvm they actually correspond to. (In addition, since there is jvm reuse, those process names might not correspond to the actual task being ran)
A quick fix is to change this line in Child.java
JvmMetrics.init(task.getPhase().toString(), job.getSessionId());
to this
JvmMetrics.init(jvmId.toString(), job.getSessionId());
so that we are using the jvm id for the process name instead.