1

プロジェクトでSpring Data Hadoopを使用しており、Hadoop 1.xでdistcpジョブを実行できました。最近、hadoop 2.x にアップグレードし、そのために spring-data-hadoop を 2.0.4 にアップグレードしました。ほとんどのものはまだ機能していますが、distcp でいくつかの問題が発生しています。spring data hadoop が distcp をこのように呼び出しているようです

Class<org.apache.hadoop.tools.DistCp> cl = org.apache.hadoop.tools.DistCp.class;
Class<?> argClass = ClassUtils.resolveClassName("org.apache.hadoop.tools.DistCp$Arguments",
                cl.getClassLoader());

https://github.com/spring-projects/spring-hadoop/blob/2.0.4.RELEASE/spring-hadoop-core/src/main/java/org/springframework/data/hadoop/fs/DistCp.java# L274-L275

ArgumentsSpring コードはクラス内の内部クラスを探していますがDistcp、この内部クラスは新しい Distcp コードにはもう存在しないようです。ジョブを実行すると、このエラーが発生します

Caused by: java.lang.IllegalStateException: Cannot run distCp impersonated as 'null'
        at org.springframework.data.hadoop.fs.DistCp.copy(DistCp.java:268) ~[spring-data-hadoop-core-2.0.4.RELEASE.jar:2.0.4.RELEASE]
        at org.springframework.data.hadoop.fs.DistCp.copy(DistCp.java:216) ~[spring-data-hadoop-core-2.0.4.RELEASE.jar:2.0.4.RELEASE]
        at org.springframework.data.hadoop.fs.DistCp.copy(DistCp.java:152) ~[spring-data-hadoop-core-2.0.4.RELEASE.jar:2.0.4.RELEASE]
        at com.att.hadoop.hdfspub.source.hdfs.HdfsFileCopier.copyFolder(HdfsFileCopier.java:104) ~[classes/:na]
        ... 45 common frames omitted
Caused by: java.lang.IllegalArgumentException: Cannot find class [org.apache.hadoop.tools.DistCp$Arguments]
        at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:286) ~[spring-core-4.1.4.RELEASE.jar:4.1.4.RELEASE]
        at org.springframework.data.hadoop.fs.DistCp.invokeCopy(DistCp.java:275) ~[spring-data-hadoop-core-2.0.4.RELEASE.jar:2.0.4.RELEASE]
        at org.springframework.data.hadoop.fs.DistCp.copy(DistCp.java:265) ~[spring-data-hadoop-core-2.0.4.RELEASE.jar:2.0.4.RELEASE]
        ... 48 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.tools.DistCp$Arguments

私の pom.xml には、spring-data-hadoop 2.0.4.RELEASE と hadoop-distcp.2.2.0 が含まれています。

4

1 に答える 1

0

これは最近の 2.1 RC1 リリースで対処されており、2.0.x ブランチへのバックポートについてはまだ検討していません。2.1.0.RC1 バージョンを試してみたい場合は、ビルドに Spring IO リポジトリを含める必要があります - プロジェクト ページのクイック スタート セクションを参照してください - http://projects.spring.io/spring-hadoop/

于 2015-01-20T12:40:36.307 に答える