一篇文章搞懂 Hive 的系统架构

1,214 阅读1分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

正文

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 的接口。

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

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

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

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

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

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

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