Hive与HBase的区别有哪些
Hive
是基于
Hadoop
的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql
查询功能,可以将
sql
语句转换为
MapReduce
任务进行运行。
HBase
是
Hadoop
的数据库,一个分布式、可扩展、大数据的存储。
1
、两者的特点
Hive
帮助熟悉
SQL
的人运行
MapReduce
任务。因为它是
JDBC
兼容的,同时,它也能够和现存的
SQL
工具整合在一起。运行Hive
查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive
的分区机制来控制。分区允许在数据集上运行过滤查询,这些数据集存 储在不同的文件夹内,查询的时候只遍历指定文件夹(
分区
)
中的数据。这种机制可以用来,例如,只处 理在某一个时间范围内的文件,只要这些文件名中包括了时间格式。
HBase
通过存储
key/value
来工作。它支持四种主要的操作:增加或者更新行,查看一个范围内的
cell
,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(
每一行的历史数据可以被删除,然后通过Hbase compactions
就可以释放出空间
)
。虽然
HBase
包括表格,但是
schema
仅仅被表格 和列簇所要求,列不需要schema
。
Hbase
的表格包括增加
/
计数功能。
2
、限制
Hive
目前不支持更新操作。另外,由于
hive
在
hadoop
上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive
必须提供预先定义好的
schema
将文件和目录映射到列,并且Hive
与
ACID
不兼容。
HBase
查询是通过特定的语言来编写的,这种语言需要重新学习。类
SQL
的功能可以通过
Apache
Phonenix
实现,但这是以必须提供
schema
为代价的。另外,
Hbase
也并不是兼容所有的
ACID
特性,虽然
它支持某些特性。最后但不是最重要的
–
为了运行
Hbase
,
Zookeeper
是必须的,
zookeeper
是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。
3
、应用场景
Hive
适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。
Hive
不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。
Hbase
非常适合用来进行大数据的实时查询。
Facebook
用
Hbase
进行消息和实时的分析。它也可以用来统计Facebook
的连接数。
4
、小总
Hive
和
Hbase
是两种基于
Hadoop
的不同技术。
Hive
是一种类
SQL
的引擎,并且运行
MapReduce
任务,Hbase是一种在
Hadoop
之上的
NoSQL
的
Key/vale
数据库。当然,这两种工具是可以同时使用的。就像用Google来搜索,用
FaceBook
进行社交一样,
Hive
可以用来进行统计查询,
HBase
可以用来进行实时查询,数据也可以从Hive
写到
Hbase
,设置再从
Hbase
写回
Hive
。