数仓--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。

相关文章

超详细的记录了HBase 集群搭建的整个过程,以及搭建过程出现...
头歌 HBase(相关的五个实验)
1.创建一个学生信息表,用来存储学生的姓名(姓名作为行键,...
大数据课程综合实验案例1 案例简介1.1 案例目的1.2 适用对象...
HBase从浅入深,(初级)什么是HBase,模型,NOSQL,架构,n...
Hadoop之Hbase安装和配置