【问题标题】:Easiest non-Java way to write HBase MapReduce on CDH3?在 CDH3 上编写 HBase MapReduce 的最简单的非 Java 方法?
【发布时间】:2010-12-29 19:12:52
【问题描述】:

我在这方面工作了很长时间,感觉很累;我希望来自 SO 社区的 [明显?] 见解可能会让我的宠物项目重新开始,这样我就可以停止踢自己了。我正在使用 Cloudera CDH3、HBase .89 和 Hadoop .20。

我有一个 Python/Django 应用程序,它使用 Thrift 接口将数据写入单个 HBase 表,效果很好。现在我想将它映射/减少到更多的 HBase 表中。

这里的明显答案是 Dumbo 或 Apache PIG,但是对于 Pig,我的版本尚不支持 HBaseStorage 适配器(Pig 能够加载类和定义,但在“映射”步骤冻结,抱怨“输入拆分”;Pig 邮件列表表明这是在 Pig 0.8 中修复的,它与 CDH3 Hadoop 不兼容,所以我必须使用所有东西的边缘版本 [我认为])。我找不到任何关于如何让 Dumbo 使用 HBaseStorage 作为数据接收器的信息。

我不在乎它是 Python、Ruby、Scala、Clojure、Jython、JRuby 还是 PHP,我只是真的不想编写 Java(出于很多原因,大多数它们涉及每次我必须将 Int() 转换为 IntWritable() 等时的下沉感觉。

我已经尝试了(在过去 4 周内)我能找到的所有最后一个解决方案和示例,用于以替代语言编写 HBase Map/Reduce 作业,但一切似乎都已过时或不完整。请 Stack Overflow 把我从我自己的设备中拯救出来!

【问题讨论】:

    标签: python hadoop mapreduce hbase


    【解决方案1】:

    这不是一个确切的答案,但它是我得到的最接近的答案--

    我昨天在 irc.freenode.net 上的 #hbase 中提问,Cloudera 的一名员工做出了回应。 我在 Pig 中遇到的“输入拆分”问题是 Pig 0.7 特有的,而 Pig 0.8 将与 Cloudera CDH3 Beta 4 捆绑在一起(没有 ETA)。因此,我想做的事情(使用 HBase 表作为接收器和源来轻松编写 M/R 作业)将在他们的下一个版本中实现。似乎 HBaseStorage 类也将得到普遍改进,以帮助从 ANY JVM 语言进行读/写操作,同时使 Jython、JRuby、Scala 和 Clojure 也更加可行。 p>

    所以此时问题的答案是“等待 CDH3 Beta 4”,或者如果您不耐烦,“下载最新版本的 Pig 并祈祷它与您的 HBase 兼容”

    【讨论】:

    • 在等待 CDH 和 Pig 的新版本时,我选择了: 1. 将我的初始数据存储到 HDFS,而不是直接转储到 HBase。 2. 使用 Dumbo 映射/减少数据,直到我满意为止(仍然存储在 HDFS 中) 3. 在 Dumbo 的 Reduce 阶段,启动 HBase 连接并 PUT 我的行。这工作得相当好,并且现在可以很好地扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多