Hive与HBase相比如何?

时间:2020-03-05 18:42:23  来源:igfitidea点击:

我有兴趣了解最近发布的(http://mirror.facebook.com/facebook/hive/hadoop-0.17/)Hive在性能方面与HBase的比较。 Hive使用的类似SQL的接口比我们已实现的HBase API更好。

解决方案

回答

很难找到有关Hive的很多信息,但是我在Hive站点上发现了这个片段,该片段非常倾向于HBase(加粗):

Hive基于Hadoop,它是一个批处理系统。因此,该系统不能也不保证查询的低延迟。这里的范例严格来说是提交作业,并在作业完成时得到通知,而不是实时查询。因此,不应将其与像Oracle这样的系统进行比较,因为该系统仅对少量数据进行分析,但由于迭代之间的响应时间少于几分钟,因此迭代进行的分析要多得多。对于Hive查询,即使是最小的作业,响应时间也可能在5到10分钟左右,对于较大的作业,响应时间甚至可能长达数小时。

由于HBase和HyperTable都与性能有关(根据Google的BigTable建模),因此听起来好像它们肯定会比Hive快得多,但会牺牲功能和更高的学习难度(例如,它们没有联接或者SQL) -like语法)。

回答

Hive是一种分析工具。就像猪一样,它被设计为通过利用map reduce来临时批量处理潜在的大量数据。想想terrabytes。想象一下在关系数据库中尝试这样做。

HBase是基于BigTable的基于列的键值存储。尽管我们可以通过HBase运行map reduce作业,但是我们本身不能执行查询。它的主要用例是按键获取行或者扫描行范围。一个主要功能是,在跨行键范围扫描列的"族"时,可以具有数据局部性。

回答

从一个角度来看,Hive由五个主要组件组成:类SQL的语法和解析器,查询计划器,查询执行引擎,元数据存储库和列式存储布局。它的主要重点是数据仓库式分析工作负载,因此不需要通过键进行低延迟的值检索。

HBase具有自己的元数据存储库和列式存储布局。可以在HBase表上编写HiveQL查询,从而使HBase可以利用Hive的语法和解析器,查询计划程序和查询执行引擎。有关更多详细信息,请参见http://wiki.apache.org/hadoop/Hive/HBaseIntegration。

回答

据我所知,Hive更像Pig。 Hive类似于SQL,Pig基于脚本。
Hive在查询优化和执行引擎方面似乎更加复杂,并且要求最终用户需要指定架构参数(分区等)。
两者都打算处理文本文件或者sequenceFiles。

HBase用于键值数据的存储和检索...我们可以对这些键值对(行)进行扫描或者过滤。我们不能对(键,值)行进行查询。