Hive 通过给用户提供的一系列交互接口,将用户提交的SQL 语句,通过其Driver 和元数据将其翻译成MapReduce 程序并将其提交到Hadoop 中执行,最后将执行的结果输出到交互接口。如图6-2 所示,Hive 的体系结构可以分为以下几部分:
图6-2 Hive 的体系结构
1.用户接口
用户接口主要有三个:CLI(Command Line Interface),Client 和HWI(Hive Web Interface)。
(1)CLI:命令行接口,也是最常使用的接口。CLI 启动的时候,会同时启动一个Hive 副本,启动方式$HIVE_HOME/bin/hive 或$HIVE_HOME/bin/hive --service cli。
(2)Client:Hive 的客户端,用户可以通过JDBC、ODBC 等连接至Hive Server。在启动Client 的时候,需要先启动Hive Server,启动方式为$HIVE_HOME/bin/hive--service hiveserver2。(www.daowen.com)
(3)HWI:Hive 提供的一种通过网页的方式访问Hive 所提供的服务,使用前要启动HWI 服务,启动方式为$HIVE_HOME/bin/hive --service hwi。
2. Metastore(元数据)
Hive 将元数据存储在关系型数据库中,如MySQL 和Derby 等。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
3. Driver(解析器)
主要包括解释器、编译器和优化器。完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在HDFS 中,并在随后由MapReduce 调用执行。
4. Hive 的数据存储在HDFS 中,大部分的查询任务由MapReduce 完成,但是包含*的查询或者只对部分字段的查询不会生成MapRedcue 任务,如select * from students,select name, age from students。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。