57

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

4

7 回答 7

51

很难找到很多关于 Hive 的信息,但我在 Hive 网站上发现了这个片段,它非常支持 HBase(加粗):

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

由于 HBase 和 HyperTable 都是关于性能的(以 Google 的 BigTable 为模型),它们听起来肯定比 Hive 快得多,但代价是功能和更高的学习曲线(例如,它们没有连接或 SQL类似语法)。

于 2008-08-30T22:16:14.213 回答
11

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

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

于 2010-06-04T04:38:53.023 回答
8

Hive 是一个分析工具。就像 pig 一样,它被设计用于通过利用 map reduce 对潜在的大量数据进行临时批处理。想想太字节。想象一下尝试在关系数据库中做到这一点......

HBase 是基于 BigTable 的基于列的键值存储。尽管您可以在 HBase 上运行 map reduce 作业,但您本身不能进行查询。它的主要用例是按键获取行,或扫描行的范围。一个主要功能是在跨行键范围扫描“系列”列时能够具有数据局部性。

于 2009-06-25T21:38:07.083 回答
5

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

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

于 2010-06-06T05:09:17.377 回答
4

Hive 和 HBase 用于不同的目的

蜂巢:

优点:

  1. Apache Hive是建立在Hadoop之上的数据仓库基础架构
  2. 它允许通过HQL查询存储在HDFS上的数据以进行分析, HQL是一种类似 SQL 的语言,将转换为一系列Map Reduce Jobs
  3. 它只在 Hadoop 上运行批处理。
  4. 它与JDBC 兼容,还与现有的基于 SQL 的工具集成
  5. Hive 支持分区
  6. 支持对一段时间内收集的数据进行分析查询

缺点:

  1. 目前不支持更新语句
  2. 它应该提供一个预定义的模式来将文件和目录映射到列中

HBase:

优点:

  1. 一个可扩展的分布式数据库,支持大型表的结构化数据存储
  2. 它提供对您的大数据的随机、实时读/写访问。HBase 操作在其数据库上实时运行,而不是 MapReduce 作业
  3. 它支持对表进行分区,并且将表进一步拆分为列族
  4. 使用 Hadoop横向扩展海量数据
  5. 在存储或检索时提供基于密钥的数据访问。它支持添加或更新行。
  6. 支持数据的版本控制。

缺点:

  1. HBase 查询是用需要学习的自定义语言编写的
  2. HBase 不完全符合 ACID
  3. 它不能用于复杂的访问模式(例如连接)
  4. 在进行大批量 MapReduce 时,它​​也不能完全替代 HDFS

概括:

Hive 可用于分析查询,而 HBase 可用于实时查询。数据甚至可以从 Hive 读取和写入 HBase 并再次返回。

于 2016-02-15T17:21:14.857 回答
3

在最近的 Hive 版本中,由于Hive 和 HBase 现在已集成,因此需要进行小幅更新的很多变化。这意味着 Hive 可以用作 HBase 数据存储的查询层。现在,如果人们正在寻找替代的 HBase 接口,Pig 还提供了一种非常好的加载和存储 HBase 数据的方法。此外,看起来Cloudera Impala可能会在 HBase 之上提供基于 Hive 的高性能查询。他们声称与传统 Hive 设置相比,查询速度提高了 45 倍。

于 2013-02-05T03:54:59.697 回答
0

为了比较 Hive 和 Hbase,我想回顾一下下面的定义:

旨在处理事务的数据库并非旨在处理分析。它的结构不能很好地进行分析。另一方面,数据仓库的结构使分析变得快速和容易。

Hive 是建立在 Hadoop 之上的数据仓库基础架构,适用于长时间运行的 ETL 作业。Hbase 是一个旨在处理实时事务的数据库

于 2015-05-11T08:19:17.517 回答