Hbase CDH4.3中的Sqoop 1.4.4不兼容ClassChangeError

Hbase CDH4.3中的Sqoop 1.4.4不兼容ClassChangeError,hbase,hdfs,cloudera,sqoop,hortonworks-data-platform,Hbase,Hdfs,Cloudera,Sqoop,Hortonworks Data Platform,Sqoop 1.4.4支持使用复合行键从db导入HBase,而在1.4.4之前,db中只有一列可以用作行键。到目前为止,CDH4.3和HDP1.3都只支持SQOOP1.4.3。我尝试在SQOOP1.4.4中交换到CDH4.3环境。当我运行一个简单的Sqoop作业时,我得到以下错误: 13/08/12 23:36:14 INFO mapred.JobClient: Cleaning up the staging area hdfs://localhost.localdomain:8020/user

Sqoop 1.4.4支持使用复合行键从db导入HBase,而在1.4.4之前,db中只有一列可以用作行键。到目前为止,CDH4.3和HDP1.3都只支持SQOOP1.4.3。我尝试在SQOOP1.4.4中交换到CDH4.3环境。当我运行一个简单的Sqoop作业时,我得到以下错误:

13/08/12 23:36:14 INFO mapred.JobClient: Cleaning up the staging area hdfs://localhost.localdomain:8020/user/cloudera/.staging/job_201308122236_0001
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
    at org.apache.sqoop.mapreduce.DelegatingOutputFormat.checkOutputSpecs(DelegatingOutputFormat.java:63)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:984)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:945)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:945)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:566)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:596)
    at org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:186)
    at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:159)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:239)
    at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:600)
    at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:118)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:413)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:502)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

以前有人收到过这个吗?有人能给我一个指针吗?Sqoop 1.4.4与哪些版本的mapreduce、HBase和HDFS兼容?

Hadoop经历了从Hadoop 1.0到Hadoop 2.0(相应地从CDH3到CDH4)的巨大代码重构。一个副作用是针对Hadoop1.0(CDH3)编译的代码与Hadoop2.0(CDH4)不兼容,反之亦然。然而,源代码是兼容的,因此只需要使用目标Hadoop发行版重新编译代码

在Hadoop 2.0(CDH4)上运行为Hadoop 1.0(CDH3)编译的代码时,异常“发现类X,但接口应位于”非常常见,反之亦然

解决方案很简单,您需要同步版本。您必须确保使用的是为Hadoop发行版编译的二进制工件。Sqoop使这变得很容易,因为目标hadoop发行版是以工件名称编码的——例如Sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz用于hadoop 2.0和CDH4[1]

贾切克

链接:


1:

Hadoop经历了从Hadoop 1.0到Hadoop 2.0(相应地从CDH3到CDH4)的巨大代码重构。一个副作用是针对Hadoop1.0(CDH3)编译的代码与Hadoop2.0(CDH4)不兼容,反之亦然。然而,源代码是兼容的,因此只需要使用目标Hadoop发行版重新编译代码

在Hadoop 2.0(CDH4)上运行为Hadoop 1.0(CDH3)编译的代码时,异常“发现类X,但接口应位于”非常常见,反之亦然

解决方案很简单,您需要同步版本。您必须确保使用的是为Hadoop发行版编译的二进制工件。Sqoop使这变得很容易,因为目标hadoop发行版是以工件名称编码的——例如Sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz用于hadoop 2.0和CDH4[1]

贾切克

链接:

1: