Hive和Hbase的区别

1. 二者分别是什么?  数据库

 Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。经过Hive可使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce. 虽然Hive提供了SQL查询功能,可是Hive不可以进行交互查询--由于它只可以在Haoop上批量的执行Hadoop。分布式

    Apache HBase是一种Key/Value系统,它运行在HDFS之上。和Hive不同,Hbase的可以在它的数据库上实时运行,而不是运行MapReduce任务。Hive被分区为表格,表格又被进一步分割为列簇。列簇必须使用schema定义,列簇将某一类型列集合起来(列不要求schema定义)。例如,“message”列簇可能包含:“to”, ”from” “date”, “subject”, 和”body”. 每个 key/value对在Hbase中被定义为一个cell,每个key由row-key,列簇、列和时间戳。在Hbase中,行是key/value映射的集合,这个映射经过row-key来惟一标识。Hbase利用Hadoop的基础设施,能够利用通用的设备进行水平的扩展。工具

2. 二者的特色oop

  Hive帮助熟悉SQL的人运行MapReduce任务。由于它是JDBC兼容的,同时,它也可以和现存的SQL工具整合在一块儿。运行Hive查询会花费很长时间,由于它会默认遍历表中全部的数据。虽然有这样的缺点,一次遍历的数据量能够经过Hive的分区机制来控制。分区容许在数据集上运行过滤查询,这些数据集存储在不一样的文件夹内,查询的时候只遍历指定文件夹(分区)中的数据。这种机制能够用来,例如,只处理在某一个时间范围内的文件,只要这些文件名中包括了时间格式。学习

    HBase经过存储key/value来工做。它支持四种主要的操做:增长或者更新行,查看一个范围内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据能够被删除,而后经过Hbase compactions就能够释放出空间)。虽然HBase包括表格,可是schema仅仅被表格和列簇所要求,列不须要schema。Hbase的表格包括增长/计数功能。大数据

3. 限制网站

  Hive目前不支持更新操做。另外,因为hive在hadoop上运行批量操做,它须要花费很长的时间,一般是几分钟到几个小时才能够获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,而且Hive与ACID不兼容。spa

    HBase查询是经过特定的语言来编写的,这种语言须要从新学习。类SQL的功能能够经过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并非兼容全部的ACID特性,虽然它支持某些特性。最后但不是最重要的--为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。日志

4. 应用场景hadoop

    Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不该该用来进行实时的查询。由于它须要很长时间才能够返回结果。

    Hbase很是适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也能够用来统计Facebook的链接数。

5. 总结

    Hive和Hbase是两种基于Hadoop的不一样技术--Hive是一种类SQL的引擎,而且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。固然,这两种工具是能够同时使用的。就像用Google来搜索,用FaceBook进行社交同样,Hive能够用来进行统计查询,HBase能够用来进行实时查询,数据也能够从Hive写到Hbase,设置再从Hbase写回Hive。

相关文章
相关标签/搜索