3

我正在将我的应用程序从 hadoop 1.0.3 迁移到 hadoop 2.2.0,并且 maven build 将 hadoop-core 标记为依赖项。由于 hadoop 2.2.0 不存在 hadoop-core。我尝试用 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 时,我们惊讶地看到依赖项的变化。我们开始一次添加一个依赖项。今天我们依赖以下核心库。

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-hdfs 和 hadoop-mapreduce-client 与 hadoop-common 一起包含到依赖项中。

于 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 回答