Hive 架构
以下架构解释了将查询提交到Hive的流程。
Hive客户端
Hive允许使用多种语言(包括Java、Python和C++)编写应用程序。它支持不同类型的客户端,如:
- Thrift服务器 – 它是一个跨语言的服务提供平台,可以为支持Thrift的所有编程语言提供请求服务。
- JDBC驱动程序 – 它用于在Hive和Java应用程序之间建立连接。JDBC驱动程序位于org.apache.hadoop.hive.jdbc.HiveDriver类中。
- ODBC驱动程序 – 它允许支持ODBC协议的应用程序连接到Hive。
Hive服务
Hive提供以下服务:
- Hive CLI – Hive CLI(命令行界面)是一个shell,我们可以在其中执行Hive查询和命令。
- Hive Web用户界面 – Hive Web用户界面只是Hive CLI的一个替代品。它提供了一个基于Web的图形界面,用于执行Hive查询和命令。
- Hive MetaStore – 它是一个中央存储库,用于存储仓库中各种表和分区的所有结构信息。它还包括列和类型信息的元数据,用于读写数据的序列化和反序列化程序,以及存储数据的相应HDFS文件。
- Hive服务器 – 它被称为Apache Thrift服务器。它接受来自不同客户端的请求并将其传递给Hive驱动程序。
- Hive驱动程序 – 它从Web UI、CLI、Thrift和JDBC/ODBC驱动程序等不同来源接收查询。它将查询传递给编译器。
- Hive编译器 – 编译器的目的是解析查询并对不同的查询块和表达式执行语义分析。它将HiveQL语句转换为MapReduce作业。
- Hive执行引擎 – 优化器生成以MapReduce任务和HDFS任务形式的逻辑计划。最后,执行引擎按照任务之间的依赖顺序执行传入的任务。