【发布时间】:2010-09-06 15:42:01
【问题描述】:
我有兴趣了解最近发布的 (http://mirror.facebook.com/facebook/hive/hadoop-0.17/) Hive 在性能方面与 HBase 的比较。 Hive 使用的类 SQL 接口比我们实现的 HBase API 更可取。
【问题讨论】:
我有兴趣了解最近发布的 (http://mirror.facebook.com/facebook/hive/hadoop-0.17/) Hive 在性能方面与 HBase 的比较。 Hive 使用的类 SQL 接口比我们实现的 HBase API 更可取。
【问题讨论】:
很难找到关于 Hive 的很多信息,但我在 Hive 网站上发现了这个 snippet,它非常支持 HBase(加粗):
Hive 基于 Hadoop,它是一个批处理系统。因此,该系统不能也不能保证查询的低延迟。这里的范例严格来说是提交作业并在作业完成时收到通知,而不是实时查询。因此,不应将其与像 Oracle 这样的系统进行比较,在这些系统中,分析是在非常少量的数据上进行的,但分析进行得更多的是迭代,迭代之间的响应时间不到几分钟。 对于 Hive 查询,即使是最小作业的响应时间也可能在 5-10 分钟左右,而对于较大的作业,这甚至可能需要数小时。
由于 HBase 和 HyperTable 都是关于性能的(以 Google 的 BigTable 为模型),它们听起来肯定会比 Hive 快得多,但代价是功能和更高的学习曲线(例如,它们没有连接或类似 SQL 的语法)。
【讨论】:
从一个角度来看,Hive 由五个主要组件组成:类似 SQL 的语法和解析器、查询计划器、查询执行引擎、元数据存储库和列式存储布局。它的主要重点是数据仓库式的分析工作负载,因此不需要通过键检索值的低延迟。
HBase 有自己的元数据存储库和列式存储布局。可以在 HBase 表上编写 HiveQL 查询,从而允许 HBase 利用 Hive 的语法和解析器、查询计划器和查询执行引擎。详情请见http://wiki.apache.org/hadoop/Hive/HBaseIntegration。
【讨论】:
Hive 是一种分析工具。就像 pig 一样,它被设计用于通过利用 map reduce 对潜在的大量数据进行临时批处理。想想太字节。想象一下尝试在关系数据库中做到这一点......
HBase 是基于 BigTable 的基于列的键值存储。尽管您可以在 HBase 上运行 map reduce 作业,但您本身不能进行查询。它的主要用例是按键获取行,或扫描行的范围。一个主要功能是在跨行键范围扫描“族”列时能够具有数据局部性。
【讨论】:
据我所知,Hive 更类似于 Pig。 Hive 类似于 SQL,而 Pig 是基于脚本的。 Hive 似乎在查询优化和执行引擎方面更加复杂,并且需要最终用户指定模式参数(分区等)。 两者都打算处理文本文件或序列文件。
HBase 用于键值数据存储和检索...您可以扫描或过滤这些键值对(行)。您不能对 (key,value) 行进行查询。
【讨论】:
Hive 和 HBase 用于不同的purpose。
蜂巢:
优点:
缺点:
HBase:
优点:
缺点:
总结:
Hive 可用于分析查询,而 HBase 可用于实时查询。数据甚至可以从 Hive 读写到 HBase 并再次返回。
【讨论】:
在最近的 Hive 版本中,发生了很多变化,需要像 Hive and HBase are now integrated 一样进行小的更新。这意味着 Hive 可以用作 HBase 数据存储的查询层。现在,如果人们正在寻找替代的 HBase 接口,Pig 还提供了一个非常好的方法loading and storing HBase data。此外,看起来Cloudera Impala 可能会在 HBase 之上提供基于 Hive 的高性能查询。他们声称与传统 Hive 设置相比,查询速度提高了 45 倍。
【讨论】:
为了比较 Hive 和 Hbase,我想回顾一下下面的定义:
旨在处理事务的数据库并非旨在处理 分析。它的结构不能很好地进行分析。一个数据仓库, 另一方面,它的结构使分析变得快速而简单。
Hive 是建立在 Hadoop 之上的数据仓库基础架构,适用于长时间运行的 ETL 作业。 Hbase 是一个旨在处理实时事务的数据库
【讨论】: