翻译: https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_hadoop_api_dependencies.html
版本: 5.14.2
在CDH 3中,所有Hadoop API 都被限制在单个JAR文件中(hadoop-core),只需要再加上其他一些依赖即可。
CDH 4和CDH 5更复杂:它们将MRv1和MRv2(YARN)捆绑在一起。为了简化事情,CDH 4和CDH 5提供了一种基于Maven的管理Hadoop API依赖关系方式,使您无需弄清楚提供Hadoop API所需的所有JAR文件的确切名称和位置。
在CDH 5中,Cloudera建议您使用 hadoop-client 所有客户端的工件,而不是手动管理基于JAR文件的依赖关系。
继续阅读:
- hadoop-client
- hadoop-client的版本
- 将hadoop-client用于基于Maven的Java项目
- 将hadoop-client用于基于Ivy的Java项目
- 使用hadoop-client包中提供的JAR文件
hadoop-client
有两种不同的 hadoop-client 工件:基于Maven的项目对象模型(POM)工件和Linux软件包。前者允许您在编译和运行时为基于Maven或Ivy的项目管理Hadoop API依赖项; 后者以可以直接添加到类路径中的JAR文件集合的形式提供接口。
hadoop客户端工件的版本
CDH 5提供了两个不同的版本 hadoop-client 工件:一个用于MRv1,一个用于MRv2(YARN)。如果您使用的是基于Maven的POM hadoop-client 工件,您可以使用版本字符串来区分它们:
更换 5.x.x 为 CDH版本号。如果您使用Linux软件包,则可以通过JAR文件的位置来区分:/usr/lib/hadoop/client-0.20 用于MRv1 API和 /usr/lib/hadoop/client 为YARN。
重要:
确保只有一个版本的 hadoop-client 工件可用于您的项目。混合MRv1和YARN hadoop-client 工件可能会导致难以调试的故障。
将hadoop-client用于基于Maven的Java项目
确保将以下依赖关系规范添加到您的 pom.xml 文件:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>VERSION</version>
<scope>provided</scope>
</dependency>
见CDH版本字符串对Maven的VERSION 串。
将hadoop-client用于基于Ivy的Java项目
确保将以下依赖关系规范添加到您的 ivy.xml 文件:
<dependency org="org.apache.hadoop" name="hadoop-client" rev="VERSION" conf="default->provided"/>
<VERSION>字符串可以是 2.2.0-cdh5.x.x 对于YARN API或 2.2.0-mr1-cdh5.x.x MR
1 为版本号。
使用hadoop-client包中提供的JAR文件
确保你添加到你的项目中提供的所有JAR文件 /usr/lib/hadoop/client-0.20 (对于MRv1 API)或 /usr/lib/hadoop/client (对于YARN)。
例如,您可以将此位置添加到JVM类路径中:
$ export CLASSPATH=/usr/lib/hadoop/client-0.20/\*