前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

Hive是底层封装了 Hadoop 的数据仓库处理工具,它运行在 Hadoop基础上,其系统架构组成主要包含4个部分,分别是用户接口、跨语言服务、底层的驱动引擎以及元数据存储系统。

下面针对 Hive 系统架构的组成部分进行讲解。

在这里插入图片描述

1. 用户接口

主要分为 3 个,分别是 CLI 、 JDBC / ODBC 和 WebUI 。

其中, CLI 即 Shell 终端命令行,它是最常用的方式。

JDBC / ODBC 是 Hive 的 Java 实现,与使用传统数据库 JDBC 的方式类似, WebUI 指的是通过测览器访问 Hive 。

2. 跨语言服务( Thrift Server )

Thrift 是 Facebook 开发的一个软件框架,可以用来进行可扩展且跨语言的服务。

Hive 集成了该服务,能让不同的编程语言调用 Hive 的接口。

关于 Thrift 的更多内容请参考我的这篇博客——Apache Thrift是什么?

3. 底层的驱动引擎(Driver)

主要包含解析器( SQL Parser ),编译器( Compiler ),优化器( Optimizer )和执行器( Executor )

它们用于完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。

Hive 的底层计算引擎可选为:MapReduce,Spark,Tez

4. 元数据存储系统( Metastore )

Hive 中的元数据通常包含表名、列、分区及其相关属性,表数据所在目录的位置信息, Metastore 默认存在自带的 Derby 数据库中。

由于 Derby 数据库不适合多用户操作,并且数据存储目录不固定,不方便管理,因此,通常都将元数据存储在 MySQL 数据库。

上一篇 下一篇