我注意到 Cascalog 入门指南指定了 Hadoop 的一个版本
:profiles { :dev {:dependencies [[org.apache.hadoop/hadoop-core "1.0.3"]]}}
如果我的团队使用不同版本的 Hadoop,那我会不会走运?更广泛地说,Cascalog 可以与哪些 Hadoop 版本进行互操作?
简单的答案是目前(截至 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 的简单指南:
我不是 Cascalog 源代码的专家,但是可以通过几行 grep 找到 Cascading API 的使用,并且升级 API 似乎很简单,如果有点乏味的话。