How does Hive compare to HBase?我有兴趣了解最近发布的(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由五个主要组件组成:类SQL的语法和解析器,查询计划器,查询执行引擎,元数据存储库和列式存储布局。它的主要重点是数据仓库式分析工作负载,因此不需要通过键进行低延迟的值检索。 HBase具有自己的元数据存储库和列式存储布局。可以在HBase表上编写HiveQL查询,从而使HBase可以利用Hive的语法和解析器,查询计划程序和查询执行引擎。有关更多详细信息,请参见http://wiki.apache.org/hadoop/Hive/HBaseIntegration。 Hive是一种分析工具。就像猪一样,它是通过利用map reduce进行临时批处理潜在大量数据的设计。想想terrabytes。想象一下在关系数据库中尝试这样做... HBase是基于BigTable的基于列的键值存储。尽管您可以通过HBase运行map reduce作业,但您本身不能执行查询。它的主要用例是按键获取行或扫描行范围。一个主要功能是,在跨行键范围扫描列的"族"时,可以具有数据局部性。
据我所知,Hive更像Pig。 Hive类似于SQL,而Pig则基于脚本。 HBase用于键值数据的存储和检索...您可以扫描或过滤这些键值对(行)。您不能对(键,值)行进行查询。 Hive和HBase用于不同的目的。 蜂巢: 优点: 缺点: HBase: 优点: 缺点: 摘要: Hive可以用于分析查询,而HBase可以用于实时查询。甚至可以从Hive读取数据并将其写入HBase,然后再返回。 在最新的Hive版本中,由于Hive和HBase已集成在一起,因此发生了许多变化,需要进行少量更新。这意味着Hive可用作HBase数据存储区的查询层。现在,如果人们正在寻找替代性的HBase接口,Pig还提供了一种非常好的加载和存储HBase数据的方法。此外,Cloudera Impala似乎可以在HBase之上提供基于Hive的大量性能查询。与传统的Hive设置相比,它们声称查询速度提高了45倍。 为了比较Hive和Hbase,我想回顾一下下面的定义:
Hive是建立在Hadoop之上的数据仓库基础架构,适用于长期运行的ETL作业。 |