一、Hive的由来:           

         Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。

       在Hive中,Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/RJob里使用这些数据。

       最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下ApacheHive为一个开源项目。它用在好多不同的公司。例如,亚马逊使用它在Amazon Elastic、MapReduce。 



二、Hive的作用     

     Hive是什么?

  • Hive是一个基于HDFS的数据仓库工具
  • Hive是可以将HQL转化为MapReduce进行数据处理查询的工具

    Hive不是什么?

  • Hive不是一个关系型数据库
  • Hive不能实时查询和行级更新。


三、Hive与Hadoop的关系

       



四、Hive的组成

hive生命周期 hive发展史_大数据

 

• 用户接口:用户访问Hive的入口 
   主要有三个:CIL(命令行),JDBC/ODBC(java),WebUI(浏览器访问)

元数据:Hive的用户信息与表的MetaData 
  Hive将元数据存储在数据库中,目前只支持mysql,derby. 
  元数据包括:表名字,表的列和分区及其属性,表的数据所在目录。

解释器,编译器,优化器:分析翻译、编译、优化HQL的组件 
  完成HQL查询语句从词法分析、语法分析、编译、优化及查询计划的生成。生成的查询计划存储在HDFS中,并随后由MapReduce调用执行。

  Hive的数据存储在HDFS中,大部分查询有MapReduce完成。(包含的查询,例如select from不会生成mapreduce任务)

•Metastore 
 Hive的Metastore组件是Hive元数据集中存放地。Metastore组件包括两个部分:Metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如Hive默认的嵌入式磁盘数据库derby,还有mysql数据库。Metastore服务是建立在后台数据存储介质之上,并且可以和Hive服务进行交互的服务组件,默认情况下,Metastore服务和Hive服务是安装在一起的,运行在同一个进程当中。我也可以把Metastore服务从Hive服务里剥离出来,Metastore独立安装在一个集群里,Hive远程调用Metastore服务,这样我们可以把元数据这一层放到防火墙之后,客户端访问Hive服务,就可以连接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的Metastore服务,可以让Metastore服务和hive服务运行在不同的进程里,这样也保证了Hive的稳定性,提升了Hive服务的效率。

•Driver 
1)Driver调用编译器处理HiveQL字串 
2)编译器将HQL转化为策略(plan) 
3)策略由元数据操作和HDFS操作组成。元数据操作只包含DDL(create,drop,alter)语句,HDFS操作只包含LOAD语句。 
4)对插入和查询而言,策略由map-reduce任务中有向非循环图组成(DAG directed acyclic graph)。



五、Hive的执行流程

hive生命周期 hive发展史_Hive_02

1Execute Query

Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行。

2Get Plan

在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求。

3Get Metadata

编译器发送元数据请求到Metastore(任何数据库)。

4Send Metadata

Metastore发送元数据,以编译器的响应。

5Send Plan

编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成。

6Execute Plan

驱动程序发送的执行计划到执行引擎。

7Execute Job

在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作。

7.1Metadata Ops

与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作。

8Fetch Result

执行引擎接收来自数据节点的结果。

9Send Results

执行引擎发送这些结果值给驱动程序。

10Send Results

驱动程序将结果发送给Hive接口。

 



六、Hive与RDBMS的比较



七、Hive的安装

      Hive是建立Hadoop环境安装之上的,所以需要Hadoop的集群环境搭建,Hive即需要依赖于HDFS又需要依赖YARN。安装好Hadoop后需要进行启动HDFS和YARN。具体安装过程,网上这方面的资料很多,这里就不在介绍了。