Hive与HBase相比如何?

时间:2008-08-23 12:22:05

标签: hadoop hbase hive

我很想知道最近发布的(http://mirror.facebook.com/facebook/hive/hadoop-0.17/)Hive在性能方面与HBase的比较。 Hive使用的类似SQL的接口比我们实现的HBase API要好得多。

7 个答案:

答案 0 :(得分:49)

Hive很难找到,但我在Hive网站上发现这个snippet大量倾向于支持HBase(粗体添加):

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

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

答案 1 :(得分:11)

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

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

答案 2 :(得分:8)

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

HBase是基于BigTable的基于列的键值存储。虽然您可以通过HBase运行map reduce作业,但您本身无法进行查询。它的主要用例是按键获取行或扫描行的范围。一个主要功能是在扫描“系列”列的行键范围时能够拥有数据位置。

答案 3 :(得分:5)

据我所知,Hive与Pig相当。 Hive与SQL类似,Pig是基于脚本的。 Hive似乎更复杂的是查询优化和执行引擎,并且需要最终用户需要指定模式参数(分区等)。 两者都打算处理文本文件或sequenceFiles。

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

答案 4 :(得分:3)

截至最新的Hive版本,已经发生了很多变化,需要进行小型更新Hive and HBase are now integrated。这意味着Hive可以用作HBase数据存储区的查询层。现在,如果人们正在寻找替代的HBase接口,那么Pig也提供了一种非常好的loading and storing HBase data方式。此外,看起来Cloudera Impala可能会在HBase之上提供基于Hive的大量性能查询。与传统的Hive设置相比,它们的查询速度提高了45倍。

答案 5 :(得分:3)

Hive和HBase用于不同的purpose

<强> 蜂巢:

<强>优点:

  1. Apache Hive 是构建于 Hadoop 之上的数据仓库基础架构
  2. 它允许查询存储在 HDFS 上的数据,以便通过 HQL 进行分析,这是一种类似于SQL的语言,它将被转换为系列映射减少作业
  3. 它只在Hadoop上运行批处理
  4. 它符合 JDBC ,它还与现有的基于SQL的工具集成
  5. Hive支持分区
  6. 它支持分析查询在一段时间内收集的数据
  7. <强>缺点:

    1. 目前不支持更新语句
    2. 应提供预定义模式以将文件和目录映射到列
    3. <强> HBase的:

      <强>优点:

      1. 可扩展的分布式数据库,支持大型表的结构化数据存储
      2. 它为您的大数据提供随机,实时读/写访问。 HBase操作在其数据库而不是MapReduce作业上实时运行
      3. 它支持分区到表,表格进一步分为列族
      4. 使用Hadoop
      5. 以大量数据水平扩展
      6. 在存储或检索时提供基于密钥的数据访问。它支持添加或更新行。
      7. 支持多元化数据。
      8. <强>缺点:

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

          <强>要点:

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

答案 6 :(得分:0)

为了将Hive与Hbase进行比较,我想回忆下面的定义:

  

设计用于处理事务的数据库不是为处理而设计的   分析。它的结构不是很好地进行分析。一个数据仓库,   另一方面,它的结构使得分析变得快速而简单。

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