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

有帮助吗?

解决方案

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

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

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

其他提示

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

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

Hive 是一种分析工具。就像 Pig 一样,它被设计用于通过利用 MapReduce 对潜在的大量数据进行临时批处理。想想太字节。想象一下尝试在关系数据库中执行此操作......

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

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

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

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

Hive和HBase的用途不同 目的.

蜂巢:

优点:

  1. 阿帕奇蜂巢 是一个 数据仓库基础设施 建立在 Hadoop.
  2. 它允许查询存储在 分布式文件系统 用于分析通过 赫奎尔, , 一个 类似SQL的语言, ,这将被转换成一系列 映射减少作业
  3. 它只运行 批处理 在 Hadoop 上。
  4. 它是 符合 JDBC 标准, ,它还与现有的基于 SQL 的工具集成
  5. Hive 支持 分区
  6. 它支持 数据分析查询 在一段时间内收集的

缺点:

  1. 目前不支持update语句
  2. 应提供预定义的架构以将文件和目录映射到列中

数据库:

优点:

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

缺点:

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

概括:

Hive可用于分析查询,而HBase可用于实时查询。数据甚至可以在 Hive 和 HBase 之间读写。

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

旨在处理交易的数据库并非旨在处理分析。它的结构不能很好地进行分析。另一方面,数据仓库的结构是使分析快速简便。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top