HIve是分布式数据仓库,基于Hadoop生态产生,由于MapReduce处理数据的编程模型对于SQL开发人员不方便,发展出Hive帮SQL人员利用Hadoop处理数据计算问题。
最初的Hive只提供了SQL转化为MapReduce的解析器,但Hive与传统数据库相比如DB2、Oracle、Mysql等相比有着本质的区别。
传统的数据库数据存储和数据引擎是一体的两者是紧密相连的、离了谁都不行,但Hive的数据存储和数据引擎是分离的,属于两个完全不同的技术架构且都可以独立存在和使用是一种合作共赢的关系。
Hive通俗来看像个中间商将存储到HDFS上的数据给扣上了一个表结构然后又请分布式计算引擎MapReduce或Spark来帮忙协助对数据进行写入和查询;Hive只维护了一个Metastore服务和一个HIveServer服务,前者提供HDFS中存储的数据与它对应的表结构关系,后者是对外提供表查询和写入的连接入口。
传统数据库的数据存储格式是固定的数据结构,使用者无法选择。Hive的数据存储格式是可以选择的,常用的有普通的TXT、SequenceFile、ORC、Parquet等等,与HIve是一种松耦合的关系且除了TXT格式外其他的数据存储格式都是列式存储,而传统的数据库则全是行存储。Hive支持的数据格式要么没有索引要么也能只能支持粗粒度的索引,因此对其查询需要额外的计算引擎支持,导致HIve的查询必定是非及时的、离线的;而传统数据库采用的是一种带精密索引的数据结构,只需要提供一个基于该数据结构的查找算法就可以以非常低的时间复杂度将目标数据找到。
HIve是一个基于Hadoop之上可以兼容多种数据存储格式以及支持多种计算引擎的OLAP工具或者客户端。