HBase和Hive的区别

Hive

常规对于HDSF存储中的数据都是用MapReduce来进行操作的,但是该代码的书写非常复杂。

Hive是为简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用户编程接口。Hive本身不存储和计算数据,它完全依赖於HDFS和MapReduce。

虽然Hive也需要安装Mysql数据库,但其是纯逻辑表,就是些表的定义等,也就是表的元数据。只是对查询的结果数据进行临时存储。

使用SQL实现Hive是因为SQL大家都熟悉,转换成本低,类似作用的Pig就不是SQL。

HBase

HBase是真实的”数据库”。

HBase为查询而生的,它通过组织起节点内所有机器的内存,提供一个超大的内存Hash表,它需要组织自己的数据结构,包括磁盘和内存中的,而Hive是不做这个的,表在HBase中是物理表,而不是逻辑表,搜索引擎使用它来存储索引,以满足查询的实时性需求。简单来说hive用来批量处理数据,HBase用来快速索引数据。

与HDFS存储数据互导
参考:
HBase和HDFS数据互导程序
HBase学习之路 (五)MapReduce操作Hbase

功能差异与关联

HBase是一个分布式的基于列存储的非关系型数据库。HBase的查询效率很高,主要由于查询和展示结果。

hive是分布式的关系型数据库。主要用来并行分布式 处理 大量数据。hive中的所有查询除了”select * from table;”都是需要通过Map\Reduce的方式来执行的。由于要走Map\Reduce,即使一个只有1行1列的表,如果不是通过select * from table;方式来查询的,可能也需要8、9秒。但hive比较擅长处理大量数据。当要处理的数据很多,并且Hadoop集群有足够的规模,这时就能体现出它的优势。

通过hive的存储接口,hive和Hbase可以整合使用。

参考:
Hadoop学习之HBase和Hive的区别

猜你喜欢

转载自blog.csdn.net/xihuanyuye/article/details/81198609