1、Hive 产生的背景:
a.MapReduce编程不方便:开发、测试、需求变更;
b.传统关系型数据库人员的需要,DBA:我就像使用sql一样的方式来处理分析大数据,不需要用mapreduce,那就好了。
所以基于以上两点,Hive就出来了。
另:文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个什么前提?
需要的前提就是结构化、文件映射成表格 ==> Schema 元数据信息(metastore) 。
什么叫Schema?可以理解为是库名、表名、字段名等信息,即元数据信息(metastore)。
2、Hive是什么
a.去官网看看:hive.apache.org
Hive其实就是:使用sql对分布式文件系统里的大的数据集进行读、写管理的数据仓库。
data warehouse ---数据仓库
分布式存储有:HDFS、S3、OSS
b.hive是构建在Hadoop之上的数据仓库
Hive通常用于离线处理,就是写sql,流程:SQL =====Hive=====MapReduce/Spark/Tez===>YARN
另:Hive诞生之初的流程,SQL =====Hive=====MapReduce===>YARN ,随着后续的发展,就会很慢,为什么执行性能慢呢,是mapreduce执行的模型导致的,因为所有的map task和reduce task都是以进程的方式进行的,要启动进程、销毁进程,所以就非常慢。即使开启gvm,用完还要关闭,成本很高。
c.Hive定义了SQL语言:HQL (类SQL)
d.Hive所支持的执行引擎:MapReduce、Spark、Tez
Hive on MapReduce