三分钟入门大数据之Hive与HBase之间的区别与联系是什么?

哈喽,大家好,我是汉斯老师。近几年来,互联网行业由于较高的薪资收入,受到许多人的追捧。很多年轻的学子,或是其他行业的有志青年,都想要投身到这个行业中来。然而一方面受到“互联网寒冬”的影响,最近频频传出各家知名互联网公司裁员缩编的消息;另一方面,大量的人才涌入,又使得互联网产业在职场上呈现出供过于求的特征,并最终导致了职场上的激烈竞争。那么互联网行业未来的潜力在哪里?我们又应该在哪个方向上发力,才能保证自己可以获得一份高薪而稳定的工作?基于多年的互联网行业从业经验,汉斯老师在这里向大家推荐大数据方向,希望通过本人的《三分钟入门大数据》和《十分钟精通大数据》等系列文章,帮助所有有志了解学习大数据的朋友掌握大数据的相关知识,也欢迎所有对互联网行业以及大数据领域感兴趣的朋友前来交流。

三分钟入门大数据之Hive与HBase之间的区别与联系是什么?

很多萌新在刚接触Hadoop体系下的各个组件时,往往会对Hive和HBase的区别和联系存在疑惑,那么Hive和HBase到底是做什么的?他们之间的区别和联系又是什么呢?

两者的定义和作用

A. Hive是Hadoop体系中,基于HDFS分布式文件系统下的一个数据仓库的查询工具。我们知道,Hadoop在计算其文件系统中的存储的数据时,是使用MapReduce来进行计算的。然而MapReduce的开发较为繁琐。试想一下,假如我们想要从Hadoop中找到一些特定的数据,那么我们每次都要开发一个MapReduce项目并运行起来才能得到结果,这中间所消耗的时间,即使是一个开发MapRduce程序的熟手来做,也是以小时计的,这是令人完全无法接受的!

这个时候,就有人想了,普通的关系型数据库查询语句SQL非常简单,应用的也比较广泛。那么我们有没有办法可以像查询关系型数据库那样查询Hadoop中的数据呢?当然,Hive就是实现这个功能的。Hive中有Hive SQL,这种查询语句几乎与SQL语句完全相同。当我们写出一个Hive SQL并运行起来时,Hadoop中实际上是将Hive SQL转化为对应功能的MapRduce并执行。

B. HBase是Hadoop中一个NoSQL数据库。要注意在HBase中,有两个特点。首先,数据都是列式存储的,每一列都会属于其对应的列族,这与常见的关系型数据库按行存储的方式不同。此外,HBase是一个key-value性质的数据库。这就意味着,HBase允许灵活的存储具有不同格式,不同属性定义的数据。

两者的区别与联系

Hive和HBase的区别在于作用定位不同。Hive只是查询工具,本身并不存储数据,这里要注意,尽管Hive并不存储数据,但Hive SQL是有create table和insert语句的。然而Hive本质上只是将插入的数据放入到HDFS文件系统中。当使用Hive进行查询的时候,Hive会在逻辑层面(内存)映射出一张表,其映射的对象就是HDFS中的数据(当然,也可以映射HBase中的表)。然而由于数据仓库本身的特性,注定了Hive不能有效支持更新数据的操作。此外,由于Hive SQL会被转化为MapReduce任务执行,而MR任务即使是做最简单的查询也会花费大量的时间,这也就注定了Hive仅能支持非实时性的查询任务。

而HBase是Hadoop中的一个数据库组件,尽管其底层也是基于HDFS文件系统,但是它是真正在物理层面存储数据的。HBase既能支持MapRduce查询,也可以单独提供快速查询的功能(当然,需要有其他组件的支持)。HBase本质上是将各种杂乱无序的数据映射成为一个大的哈希表,这也就使得HBase具备了NoSQL数据库的特性,可以允许行级数据间,存在不同的数据结构。不同于Hive,由于HBase是单独存储数据,这也意味着HBase可以支持插入,更新,删除,查询等操作。


分享到:


相關文章: