Cascalog Hadoop版本支持

MRo*_*lin 5 hadoop clojure cascalog

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

:profiles { :dev {:dependencies [[org.apache.hadoop/hadoop-core "1.0.3"]]}}
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*nas 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 似乎非常简单,尽管有点乏味。