5

我注意到 Cascalog 入门指南指定了 Hadoop 的一个版本

:profiles { :dev {:dependencies [[org.apache.hadoop/hadoop-core "1.0.3"]]}}

如果我的团队使用不同版本的 Hadoop,那我会不会走运?更广泛地说,Cascalog 可以与哪些 Hadoop 版本进行互操作?

4

1 回答 1

0

简单的答案是目前(截至 2014 年 8 月 10 日)Cascalog 版本为 2.1.1,默认使用 Cascading 2.5.3 和 Hadoop 1.2.1,所以是的,如果您的团队没有使用 Hadoop 版本 1.x,那么您再倒霉。

但是,Cascalog 可以移植到 Hadoop 2.x。Cascading 2.5.x 支持 Hadoop 2,来自 Hadoop 1 vs Hadoop 2文档:

Cascading 2.5 通过提供两个 Java 依赖项 cascading-hadoop.jar 和 cascading-hadoop2-mr1.jar 来支持 Hadoop 1.x 和 2.x。这些依赖关系可以互换,但 hadoop2-mr1.jar 引入了新的 API 调用,并在适当的时候弃用了旧的 API 调用。需要指出的是 hadoop1-mr1.jar 只支持 MapReduce 1 API 约定。通过这种命名方案,可以引入新的 API 约定,而不会有依赖项命名冲突的风险。

以下是将 Cascalog 更新到 Hadoop 2.x 的简单指南:

  • 更新项目文件中的cascading-hadoop jar
  • 在HADOOP-VERSION配置文件中更新 hadoop 版本
  • 查找已弃用的 Cascading API 的所有用途并更新到新约定。
  • 编译和修复警告/错误
  • 复发

我不是 Cascalog 源代码的专家,但是可以通过几行 grep 找到 Cascading API 的使用,并且升级 API 似乎很简单,如果有点乏味的话。

于 2014-08-11T02:41:00.877 回答