0

Sqoop 1.4.4 は、複合行キーを使用した db から HBase へのインポートをサポートしますが、1.4.4 より前では、db の 1 つの列のみを行キーとして使用できます。これまでのところ、CDH4.3 と HDP1.3 はどちらも Sqoop 1.4.3 のみをサポートしています。sqoop 1.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 のどのバージョンと互換性がありますか?

4

1 に答える 1

3

Hadoop は、Hadoop 1.0 から Hadoop 2.0 (対応して CDH3 から CDH4) への大規模なコード リファクタリングを経てきました。1 つの副作用として、Hadoop 1.0 (CDH3) に対してコンパイルされたコードは Hadoop 2.0 (CDH4) と互換性がなく、その逆も同様です。ただし、ソース コードは互換性があるため、ターゲットの Hadoop ディストリビューションでコードを再コンパイルするだけで済みます。

Hadoop 2.0 (CDH4) で Hadoop 1.0 (CDH3) 用にコンパイルされたコードを実行している場合、またはその逆の場合、例外「クラス X が見つかりましたが、インターフェイスが期待されていました」は非常に一般的です。

解決策は簡単です。バージョンを同期する必要があります。Hadoop ディストリビューション用にコンパイルされたバイナリ アーティファクトを使用していることを確認する必要があります。Sqoop では、ターゲットの Hadoop ディストリビューションがアーティファクト名でエンコードされているため、これを簡単に行うことができます。

ヤルセック

リンク:

1: http://www.apache.org/dist/sqoop/1.4.4/

于 2013-08-13T14:26:54.107 に答える