目录:
- 零、前言
- 一、定义
- 二、区别
- 三、应用场景
零、前言
在学大数据分析的过程中,Hive和HBase是两个非常重要的内容,对于初学者而言容易混淆。所以比较两者区别,能够帮助我们对这两个组件有一个清晰的认识和定位。那么,Hive和HBase有哪些区别以及应用场景呢?
一、定义
- Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,默认情况下可以将sql语句转换为MapReduce任务进行运行。
- HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。
二、区别
- Hive是运行在Hadoop上的一个工具,准确地讲是一个搜索工具。当对海量数据进行搜索时,Hadoop的计算引擎是MapReduce。但是对MapReduce的操作和编程是非常复杂的。于是Hive的存在就让复杂的编程过程简化成了用SQL语言对海量数据的操作。这大大减轻了程序员的工作量。
- HiveSql默认情况下会转换成MapReduce进行计算,所以比较慢,只能做离线数据分析,不能做实时查询。
- HBase,它是Hadoop的子项目,当然也可以理解为一个工具。Hadoop的数据运算是由MapReduce完成的,而数据存储是由HDFS完成的。HDFS是分布式存储,这是Hadoop存储数据的特点,但由此带来的问题就是数据的无序和散乱。
- HBase是NoSql数据库,是物理表,不是逻辑表,虽然数据是存储在hdfs,但是读写速度非常快,适合做大数据量的即时查询。
三、应用场景
1.Hive中的表为纯逻辑表,仅仅对表的元数据进行定义。Hive没有物理存储的功能,它完全依赖HDFS和MapReduce。HBase表则是物理表,适合存放非结构化的数据。
2.Hive是在MapReduce的基础上对数据进行处理,而MapReduce的数据处理依照行模式;而HBase为列模式,这样使得对海量数据的随机访问变得可行。
3.HBase的存储表存储密度小,因而用户可以对行定义成不同的列;而Hive是逻辑表,属于稠密型,即定义列数,每一行对列数都有固定的数据。
4.Hive一般是做大数据量的离线数据分析,比如日志数据分析,但是不能做实时查询,因为需要很长时间才能返回结果;HBase适合用来对数据量很大的明细数据进行实时查询,如订单数据,用户画像数据。