微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数仓--Hive-面试之Hive与HBase的区别

从使用方面讲

  • Hive是一个构建在Hadoop平台上的数据仓库,可以将结构化的数据文件映射为一张数据库表。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类sql语言,这种语言最终被转化成Map/Reduce。
  • HBase 是基于HDFS平台的Key/Value类型的Nosql数据库,是一个分布式、可扩展、存储海量数据的数据库,并且对与null值保存不占用空间。HBase能够在数据库上实时运行,而不是运行MapReduce任务。HBase被分区成表,表格又进一步分割成列族。列族必须使用Schema定义,列族将某一类型的列集合起来。例如:"message"列族可能包含"to"、"from" 、"date" 、"body"等列。HBase中每一个Key/Value被定义为一个cell,一个完整的cell由rowkey、列族、列、时间戳组成。在HBase中,行是Key/Value映射的集合,整个映射通过rowkey来唯一标识。HBase利用Hadoop的基础设施,可以进行水平扩展。

两者的特点

  • Hive帮助熟悉sql的人运行MapReduce任务。运行Hive查询会花费较长时间,因为Hive的认计算引擎是Hadoop的MapReduce。当然Hive也可以将底层计算引擎更换为Spark/Tez等。
  • HBase通过存储Key/Value类型数据来工作。它支持四种主要的操作:增加或者更新行、查看一个范围内的cell、获取指定的行、删除指定的行、列或者列的版本。HBase数据的版本信息主要用来获取历史数据,每一行的历史数据可以被删除,然后通过HBase 的Compactions可以释放空间。虽然HBase包括表格,但是schema仅仅被表格和列族所要求,列不需要schema。HBase的表包括增加和计数功能

限制

  • Hive目前仅支持ORCFile文件格式的数据更新操作(前提是需要开启事务支持),Hive必须提供预先定义好的schema,将文件映射成表。
  • HBase的SQL查询功能可以通过 Apache Phonenix实现,需要提供表的schema。HBase的运行需要zookeeper的支持,zookeeper用来分布式协调服务(配置服务、维护元信息、命名空间服务)

应用场景

  • Hive主要用户构建基于Hadoop平台的数据仓库,处理大数据量的离线处理工作;
  • HBase适合用来大数据的实时查询、海量数据的存储、离散型数据的存储;

总结

Hive和Hbase是两种基于Hadoop的不同技术–Hive是一种类sql的引擎,并且运行MapReduce任务,HBase是一种在Hadoop之上的Nosql 的Key/value数据库。当然,这两种工具是可以同时使用的。Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐