Hive与HBase相比如何?

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

很难find关于Hive的很多内容,但是我在Hive站点上发现了这个片段 ,这个片段非常重视HBase(大胆的补充):

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

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

从一个angular度来看,Hive由五个主要组件组成:一个类似于SQL的语法和parsing器,一个查询规划器,一个查询执行引擎,一个元数据存储库和一个列式存储布局。 它的主要焦点是数据仓库式分析工作负载,所以按键的低延迟检索值不是必需的。

HBase有自己的元数据库和列式存储布局。 可以通过HBase表创作HiveQL查询,使HBase能够利用Hive的语法和parsing器,查询规划器和查询执行引擎。 有关更多详细信息,请参阅http://wiki.apache.org/hadoop/Hive/HBaseIntegration

Hive是一个分析工具。 就像猪一样,它是专门用于通过利用地图缩减来临时批量处理潜在的大量数据的。 认为terrabytes。 想象一下,试图在关系数据库中这样做…

HBase是基于BigTable的基于列的键值存储。 尽pipe您可以通过HBase运行map reduce作业,但本身不能执行查询。 主要用途是通过按键提取行或者扫描行的范围。 一个主要function是能够跨越行列的范围扫描数据区域。

以我卑微的知识来看,Hive更像猪。 Hive类似SQL,Pig是基于脚本的。 configuration单元似乎更复杂的查询优化和执行引擎,以及要求最终用户需要指定模式参数(分区等)。 两者都打算处理文本文件或sequenceFiles。

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

从最新的Hive发行版开始, Hive和HBase现在已经被整合 ,很多已经发生了变化,需要一个小小的更新。 这意味着Hive可以用作HBase数据存储的查询层。 现在,如果人们正在寻找替代的HBase接口,Pig也提供了一个非常好的加载和存储HBase数据的方法 。 此外,看起来Cloudera Impala可能会在HBase基础上提供基于Hive的查询。 与传统的Hive设置相比,它们的查询速度提高了45倍。

Hive和HBase被用于不同的目的 。

蜂巢:

优点:

  1. Apache Hive是一个build立在Hadoop之上数据仓库基础架构
  2. 它允许查询存储在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,然后再回来。

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

旨在处理事务的数据库不是为了处理分析而devise的。 它没有结构化分析。 另一方面,数据仓库的结构使分析变得快速和简单。

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