2011-11-07 87 views
5

(甚至比Difference between Pig and Hive? Why have both?更基本的)使用Pig/Hive进行数据处理而不是直接java map缩减代码?

我已经写在数据处理流水线数的Java的map-reduce任务在Hadoop的(我自己的自定义代码,从Hadoop的映射和减速派生)。这是一系列基本操作,例如连接,反转,排序和分组。我的代码涉及到,而不是非常通用的。

继续这种公认的开发密集型方法与使用多个UDF将所有内容迁移到Pig/Hive的优缺点是什么?哪些工作将无法执行?我会受到性能下降的影响吗(与100个TB一起工作)?我会在维护时失去调整和调试代码的能力吗?我将能够将部分作业作为Java map-reduce进行管理,并将其输入输出与我的Pig/Hive作业一起使用?

回答

8

参考Twitter:通常Pig脚本是大约5%的时间写入的原生映射/缩减代码的5%。但是,查询通常需要110-150%的时间来执行本地地图/缩减作业。但是,当然,如果有一个对性能高度敏感的例程,他们仍然可以直接手动编写本地map/reduce函数。

以上参考文献还讨论了Pig在开发MapReduce应用程序时的优缺点。

与任何更高级别的语言或抽象一样,Pig/Hive在牺牲开发人员生产力的情况下失去了灵活性和性能。

+8

(我在Twitter上致力于Pig):110-150%的数字有点武断。通常情况下,Pig会比你的代码快得多,因为它做了很多优化。从根本上讲,它将事情转化为MR,所以它不会比MR更快。但简单的初学者到中级MR代码会经常失败。 – SquareCog

+0

Thnx的洞察力。 –

3

在此paper截至2009年,它表明,猪运行比普通MapReduce慢1.5倍。预计在Hadoop之上构建的更高级别的工具比普通的MapReduce执行速度要慢,但是为了使MapReduce能够最优地执行,需要编写大量样板代码的高级用户(例如二进制比较器)。

我发现它与提及一个名为Pangool(我是开发者)的新API有关,它旨在通过使许多事情更易于编码和理解来取代普通的Hadoop MapReduce API(二级排序,reduce-边连接)。 Pangool不会强加性能开销(截至first benchmark只有5%),并保留原始MapRed API的所有灵活性。

相关问题