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

Benjamin Coverston commented on CASSANDRA-5201:
-----------------------------------------------

Take a look at the code, it works for Hadoop1 and Hadoop2 without 
recompliation, and without shipping two sets of dependencies. Basically it 
detects the current version of Hadoop that you're running and dynamically 
determines which TaskAttemptContext to use, the Class, or the Interface. 
There's no need to use deployment classifiers to solve this particular problem.

> Cassandra/Hadoop does not support current Hadoop releases
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-5201
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Hadoop
>    Affects Versions: 1.2.0
>            Reporter: Brian Jeltema
>            Assignee: Benjamin Coverston
>             Fix For: 2.0.6
>
>         Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>       at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>       at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>       at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>       at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>       at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>       at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>       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:1153)
>       at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>       at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>       at MyHadoopApp.run(MyHadoopApp.java:163)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>       at MyHadoopApp.main(MyHadoopApp.java:82)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:601)
>       at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



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

Reply via email to