【问题标题】:How does Hive compare to HBase?Hive 与 HBase 相比如何?
【发布时间】:2010-09-06 15:42:01
【问题描述】:

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

【问题讨论】:

    标签: hadoop hbase hive


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

            Hive 和 HBase 用于不同的purpose

            蜂巢:

            优点:

            1. Apache Hive 是一个建立在 Hadoop 之上的数据仓库基础架构
            2. 它允许查询存储在 HDFS 上的数据,以便通过 SQL 类语言 HQL 进行分析,这些数据将被转换为一系列Map Reduce 工作
            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-0.14 及以上是 ACID 投诉。
            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-06-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多