一、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的入口
主要有三个: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的执行流程
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。具体安装过程,网上这方面的资料很多,这里就不在介绍了。