3

アプリケーションを hadoop 1.0.3 から hadoop 2.2.0 に移行していますが、maven ビルドには依存関係としてマークされた hadoop-core がありました。hadoop-core は hadoop 2.2.0 には存在しないためです。hadoop-client と hadoop-common に置き換えてみましたが、ant.filter でまだこのエラーが発生します。誰が使用するアーティファクトを提案できますか?

previous config :
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.0.3</version>
</dependency>

New Config:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.2.0</version>
</dependency>

エラー:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project event: Compilation failure: Compilation failure:

[ERROR] /opt/teamcity/buildAgent/work/c670ebea1992ec2f/event/src/main/java/com/intel/event/EventContext.java:[27,36] package org.apache.tools.ant.filters does not exist

[ERROR] /opt/teamcity/buildAgent/work/c670ebea1992ec2f/event/src/main/java/com/intel/event/EventContext.java:[27,36] package org.apache.tools.ant.filters does not exist

[ERROR] /opt/teamcity/buildAgent/work/c670ebea1992ec2f/event/src/main/java/com/intel/event/EventContext.java:[180,59] cannot find symbol

[ERROR] symbol: class StringInputStream

[ERROR] location: class com.intel.event.EventContext
4

3 に答える 3

6

アプリケーションは主に hdfs api に依存しています。Hadoop 2.X に移行したとき、依存関係の変化に驚きました。依存関係を 1 つずつ追加し始めました。現在、次のコア ライブラリに依存しています。

hadoop-annotations-2.2.0
hadoop-auth-2.2.0
hadoop-common-2.2.0
hadoop-hdfs-2.2.0
hadoop-mapreduce-client-core-2.2.0

これらに加えて、テスト ライブラリにも依存しています。必要に応じて、hadoop-common とともに hadoop-hdfs と hadoop-mapreduce-client を依存関係に含めることができます。

于 2014-03-13T04:22:28.623 に答える
0

これらのアーティファクトを試してみてください。私のサンプル プロジェクトのワードカウントで問題ありません

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.2.0</version>
</dependency>

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.2.1</version>
</dependency>
于 2014-03-13T00:45:40.787 に答える
0

Maven の依存関係は、このリンクから取得できます。hadoop-core の依存関係に関する限り、hadoop-core は hadoop 1.X の名前であり、バージョンの名前を 2.X に変更するだけでは役に立ちません。また、hadoop 1.X 依存関係を使用する hadoop 2.X プロジェクトでは、次のようなエラーが発生します

原因: org.apache.hadoop.ipc.RemoteException: サーバー IPC バージョン 9 はクライアント バージョン 4 と通信できません

したがって、使用しないことをお勧めします。Hadoopで次の依存関係を使用しています

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-core</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-common</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>

これらを試すことができます。

于 2015-09-12T10:22:18.063 に答える