发展趋势 阿帕奇蜂巢和猪的简要介绍

阿帕奇蜂巢和猪的简要介绍

Anonim

Apache Hive是一个位于Hadoop之上的框架,用于对Hadoop中的数据进行临时查询。 Hive支持与SQL类似的HiveQL,但不支持SQL的完整构造。


Hive将HiveQL查询隐藏到Java MapReduce程序中,然后将其提交到Hadoop集群。 使用HiveQL和Java MapReduce可以实现相同的结果,但是与HiveQL相比,使用Java MapReduce将需要编写/调试许多代码。 因此,HiveQL可以提高开发人员的生产力。


总而言之,Hive通过HiveQL语言提供了比Java MapReduce编程更高层次的抽象。 与其他任何高级抽象一样,与Java MapReduce相比,使用HiveQL会有一些性能开销,但是Hive社区正在努力缩小大多数常用场景的差距。


同样,Pig提供了比MapReduce更高级别的抽象。 Pig支持PigLatin构造,将其转换为Java MapReduce程序,然后提交给Hadoop集群。



虽然HiveQL是像SQL一样的声明性语言,但是PigLatin是数据流语言。 一个PigLatin构造的输出可以作为输入发送到另一个PigLatin构造,依此类推。


一段时间以前,Cloudera发布了有关典型Hadoop集群中工作负载特征的统计信息,可以很容易地观察到Pig和Hive作业在Hadoop集群中占很大一部分。 由于更高的开发人员生产力,许多公司选择了Pig和Hive等更高级别的摘要。 因此,我们可以肯定,与MapReduce开发相比,Hive和Pig周围会有很多职位空缺。



尽管2011年10月出版了《 Programming Pig》一书,但2012年10月出版了《 Hive编程》书。对于那些有使用RDBMS经验的人,开始使用Hive比开始使用Pig更好。 还要注意,PigLatin语言并不是很容易入门。


对于基础的Hadoop集群,通过Hive和Pig提交Java MapReduce作业还是MapReduce作业是透明的。 由于MapReduce作业的面向批处理性质,因此通过Hive和Pig提交的作业本质上也是面向批处理的。


对于实时响应要求,Hive和Pig不满足要求,因为前面提到的MapReduce作业的面向批处理性质。 Cloudera开发了Impala,它基于Dremel(来自Google的出版物),用于基于Hadoop的交互式即席查询。 Impala支持类似SQL的查询,并且与HiveQL兼容。 因此,任何在Hive之上构建的应用程序都可以通过Impala进行最少的更改。 Hive和Impala之间的主要区别在于,虽然HiveQL转换为Java MapReduce作业,但Impala不会将SQL查询转换为Java MapReduce作业。


您是否应该对Pig或Hive提出特定要求? 这是另一个博客的主题。


经Praveen Sripati许可重新发布。 原始文章可以在这里找到:http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html

阿帕奇蜂巢和猪的简要介绍