[ 
https://issues.apache.org/jira/browse/MAPREDUCE-5831?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14039241#comment-14039241
 ] 

Jason Lowe commented on MAPREDUCE-5831:
---------------------------------------

We solve this on our clusters by leveraging MAPREDUCE-4421 (i.e.: deploy MR via 
HDFS) and have our client configs ask for the same version of the MR framework 
that they are.  That way MR clients always use the same jars for AMs and tasks 
that match their version, so we won't have an old jobclient trying to talk to a 
new AM or vice-versa.

> Old MR client is not compatible with new MR application
> -------------------------------------------------------
>
>                 Key: MAPREDUCE-5831
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5831
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: client, mr-am
>    Affects Versions: 2.2.0, 2.3.0
>            Reporter: Zhijie Shen
>            Assignee: Tan, Wangda
>            Priority: Critical
>
> Recently, we saw the following scenario:
> 1. The user setup a cluster of hadoop 2.3., which contains YARN 2.3 and MR  
> 2.3.
> 2. The user client on a machine that MR 2.2 is installed and in the classpath.
> Then, when the user submitted a simple wordcount job, he saw the following 
> message:
> {code}
> 16:00:41,027  INFO main mapreduce.Job:1345 -  map 100% reduce 100%
> 16:00:41,036  INFO main mapreduce.Job:1356 - Job job_1396468045458_0006 
> completed successfully
> 16:02:20,535  WARN main mapreduce.JobRunner:212 - Cannot start job 
> [wordcountJob]
> java.lang.IllegalArgumentException: No enum constant 
> org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_REDUCES
>       at java.lang.Enum.valueOf(Enum.java:236)
>       at 
> org.apache.hadoop.mapreduce.counters.FrameworkCounterGroup.valueOf(FrameworkCounterGroup.java:148)
>       at 
> org.apache.hadoop.mapreduce.counters.FrameworkCounterGroup.findCounter(FrameworkCounterGroup.java:182)
>       at 
> org.apache.hadoop.mapreduce.counters.AbstractCounters.findCounter(AbstractCounters.java:154)
>       at 
> org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:240)
>       at 
> org.apache.hadoop.mapred.ClientServiceDelegate.getJobCounters(ClientServiceDelegate.java:370)
>       at 
> org.apache.hadoop.mapred.YARNRunner.getJobCounters(YARNRunner.java:511)
>       at org.apache.hadoop.mapreduce.Job$7.run(Job.java:756)
>       at org.apache.hadoop.mapreduce.Job$7.run(Job.java:753)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at javax.security.auth.Subject.doAs(Subject.java:415)
>       at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
>       at org.apache.hadoop.mapreduce.Job.getCounters(Job.java:753)
>       at org.apache.hadoop.mapreduce.Job.monitorAndPrintJob(Job.java:1361)
>       at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1289)
>         . . .
> {code}
> The problem is that the wordcount job was running on one or more than one 
> nodes of the YARN cluster, where MR 2.3 libs were installed, and 
> JobCounter.MB_MILLIS_REDUCES is available in the counters. On the other side, 
> due to the classpath setting, the client was likely to run with MR 2.2 libs. 
> After the client retrieved the counters from MR AM, it tried to construct the 
> Counter object with the received counter name. Unfortunately, the enum didn't 
> exist in the client's classpath. Therefore, "No enum constant" exception is 
> thrown here.
> JobCounter.MB_MILLIS_REDUCES is brought to MR2 via MAPREDUCE-5464 since 
> Hadoop 2.3.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to