Hive系统架构
Hive是底层封装了Hadoop的数据仓库处理工具,它运行在Hadoop基础上,其系统架构组成主要包含4个部分,分别是用户接口、跨语言服务、底层的驱动引擎以及元数据存储系统,具体如图1所示。
图1 Hive系统架构
下面我们针对Hive系统架构的组成部分进行讲解。
(1)用户接口:主要分为三个,分别是CLI、JDBC/ODBC和WebUI。其中,CLI即Shell终端命令行,它是最常用的方式。JDBC/OCBC是Hive的Java实现,与使用传统数据库JDBC的方式类似,WebUI指的是通过浏览器访问Hive。
(2)跨语言服务(Thrift Server):Thrift是Facebook开发的一个软件框架,可以用来进行可扩展且跨语言的服务。Hive集成了该服务,能让不同的编程语言调用Hive的接口。
(3)底层的驱动引擎:主要包含编译器(Compiler),优化器(Optimizer),执行器(Executor),它们用于完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
(4)元数据存储系统(Metastore):Hive中的元数据通常包含表名、列、分区及其相关属性,表数据所在目录的位置信息,Metastore默认存在自带的Derby数据库中。由于Derby数据库不适合多用户操作,并且数据存储目录不固定,不方便管理,因此,通常我们都将元数据存储在MySQL数据库。