hive和hbase是大数据领域常见的两个组件,常常会被放在一起比较,于是略微总结了一下两者的区别,通过不同的维度对二者进行一下分析,以供参考。
概念
- Apache hive是构建在Hadoop基础之上的数据仓库,支持使用hive SQL(又称hql,这是一种类sql语言)语句对hdfs上的数据进行查询,这种语句最终回被转换成map-reduce任务进行执行。但是不支持交互式查询,因为查询的都是hdfs上的数据,Hadoop只支持批量的map-reduce任务。
- Apache hbase是运行在hdfs上的一种nosql的key-value数据库,hbase可以通过自己的数据库实现实时的交互查询,而不是转换为map-reduce任务。
原理
-
hive可以帮助又sql基础的人快速使用,因为它是jdbc兼容的,其使用derby存储元数据。
在运行hive时需要较长的时间,因为其默认是遍历全表的数据
不兼容ACID
不支持行级别的增删改查
没有事务机制 -
hbase有自己定义的语言,需要重新学习,类SQL语言可以通过Apache的工具Phonenix实现。
hbase的运行速度较快
不兼容ACID
支持增删改查
没有事务机制
需要使用zookeeper进行管理
使用场景
- Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算一段时间内的发展趋势或者网站的日志。鉴于hive查询时间较长,因此不适合做实时分析时使用。
- Hbase非常适合用来进行大数据的实时查询。例如Facebook就是用Hbase进行消息和实时的分析。