Hive和HBase是大数据的重点,但二者的区别联系你了解吗?

       在大数据的学习过程中有两个概念需要特别注意和学习,那就是Hive和HBase,对于初学者而言二者的区别和关系又很容易搞混,所以,我们不妨来详细的区分一下二者的关系。


       首先,我们从概念上了解二者的关系和区别

       1、Hive的是基于Hadoop上的数据仓库的基础构架,利用HQL(简单的SQL语句)来查询、分析存储在HDFS的数据。并且把SQL语句转换成MapReduce程序来数据的处理。可以不太精确描述为HDFS原始存储+DB Schema信息存储+SQL解析引擎+底层计算框架组成的数据仓库,Hive与传统的关系数据库主要区别在以下几点:

       A、存储的位置 Hive的数据存储在HDFS或者Hbase中,而后者一般存储在裸设备或者本地的文件系统中。

       B、Hive是不支持更新的,一般是一次写入多次读写。

       C、执行SQL的延迟 Hive的延迟相对较高,因为每次执行HQL需要解析成MapReduce。

       D、数据的规模上 Hive一般是TB级别,而后者相对较小。

       E、可扩展性上 Hive支持UDF(User-Defined-Function)/UDAF(User-Defined Aggregation Funcation)/UDTF

(User-Defined Table-Generating Functions),后者相对来说较差。

       2、HBase(Hadoop Database),是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase是Key-Value形式的数据库(类似于java里的Map)。既然是数据库,HBase中的表大概有以下几个特点,是区别于传统关系型数据库的最大差异:

       A、大:一个表可以有上亿行,上百万列(列多时,插入变慢)。主要是面向列(族)具有存储和权限控制,列(族)独立检索。

       B、稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

       C、每个cell中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳。

       D、HBase中的数据都是字节,没有类型(因为系统需要适应不同种类的数据格式和数据源,不能预先严格定义模式)

       其次,我们来分析Hive和HBase这两者的场景化应用?

       1.Hive中的表为纯逻辑表,仅仅对表的元数据进行定义。Hive没有物理存储的功能,它完全依赖HDFS和MapReduce。尚学堂陈老师指出这样就可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。HBase表则是物理表,适合存放非结构化的数据。

       2.Hive是在MapReduce的基础上对数据进行处理,而MapReduce的数据处理依照行模式;而HBase为列模式,这样使得对海量数据的随机访问变得可行。

       3.HBase的存储表存储密度小,因而用户可以对行定义成不同的列;而Hive是逻辑表,属于稠密型,即定义列数,每一行对列数都有固定的数据。

       4.Hive使用Hadoop来分析处理数据,而Hadoop系统是批处理系统,所以数据处理存在延时的问题;而HBase是准实时系统,可以实现数据的实时查询。

       5.Hive没有row-level的更新,它适用于大量append-only数据集(如日志)的批任务处理。而基于HBase的查询,支持和row-level的更新。

       6.Hive全面支持SQL,一般可以用来进行基于历史数据的挖掘、分析。而HBase不适用于有join,多级索引,表关系复杂的应用场景。

       Hive和HBase的区别只是单纯的分析或许你还是难以理解,所以,对于求学者而言,你最好还是能够找几个案例去应用,这样才能够更为精准的理解二者的联系和区别。

本文转自:海牛学院

猜你喜欢

转载自blog.csdn.net/hainiubuluo/article/details/80801738