首页 > 代码库 > Hbase和Hive之间的区别知多少?

Hbase和Hive之间的区别知多少?

        Hive是为了简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用戶编程接口。Hive本身不存储和计算数据,它完全依赖于HDFSMapReduceHive中的表纯逻辑,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,转换成本低,类似作用的Pig就不是SQL

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

 

Hive类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehousesql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

 

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

 

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

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



进一步总结:

1hivesql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce

2hive是面向行存储的数据库。

3Hive本身不存储和计算数据,它完全依赖于HDFSMapReduceHive中的表纯逻辑。

4HBase为查询而生的,它通过组织起节点內所有机器的內存,提供一個超大的內存Hash

5hbase不是关系型数据库,而是一个在hdfs上开发的面向列的分布式数据库,不支持sql

6hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。

7hbase是列存储。

 

注意点:Hive只供维护用,真正查起来非常非常慢的!

这是因为它的底层是要通过mapreduce分布式计算的,hbasehivepig底层都是这样的。但整体来说hadoop还是比较快的,因为它是进行海量数据存储和分布式计算,这个速度已经很不错了。

 

看看HBase是什么——Hbase很特别,很多框架位置服务

HiveHbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。

 

其中HBase位于结构化存储层,Hadoop HDFSHBase提供了高可靠性的底层存储支持,Hadoop MapReduceHBase提供了高性能的计算能力,ZookeeperHBase提供了稳定服务和failover机制。

此外,PigHive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。


再看形象版解析:

觉得在问区别之前,我应该显示说相同点,这么一想,又糊涂了,hivehbase哪里像了,好像哪里都不像,既然哪里都不像,又何来的区别是什么这一问题,他俩所有的都算区别。
那么,hive是什么?
白话一点再加不严格一点,hive可以认为是map-reduce的一个包装。hive的意义就是把好写的hivesql转换为复杂难写的map-reduce程序。
于是,hbase是什么?
同样白话一点加不严格一点,hbase可以认为是hdfs的一个包装。他的本质是数据存储,是个NoSql数据库;hbase部署于hdfs之上,并且克服了hdfs在随机读写方面的缺点。
所以要问hivehbase的区别,就应该问问map-reducehdfs之间的区别,问区别,就要先说说他俩哪里像。
于是,你说map-reducehdfs哪里像了呢?