- Hadoop数据仓库实战
- 肖睿 兰伟 廖春琼主编
- 846字
- 2025-04-02 16:30:18
1.1.2 Hive架构设计
1. Hive架构图
Hive架构包含3个部分。
(1)Hive客户端(Hive Clients)。Hive为不同类型应用程序提供不同的驱动,使应用程序可通过Java、Python等语言连接Hive并进行与RDBMS类似的SQL查询操作。对于Java应用程序,Hive提供了JDBC驱动;对于其他应用程序,Hive提供了ODBC驱动。
(2)Hive服务端(Hive Services)。客户端必须通过服务端与Hive交互,服务端主要包括CLI、Hive Server、Hive Web Interface、Driver、Metastore等组件。
(3)Hive存储与计算(Hive Storage and Computing)。Hive主要通过元数据存储数据库和Hadoop集群进行数据的存储与计算。Hive的元数据使用RDBMS存储,Hive的数据存储在HDFS中,大部分数据查询由MapReduce完成。
Hive的具体架构如图1.2所示。

图1.2 Hive架构
2. Hive服务端组件详解
Hive服务端主要由以下3部分构成。
(1)用户接口
① CLI:控制台命令行方式。CLI是最基础的连接方式,使用“hive”命令连接。CLI启动时会同时启动一个Hive副本,相当于“hive --service cli”。
② Hive Server:包括HiveServer1和HiveServer2两种,其中HiveServer1在新版中被删除,所以推荐使用HiverSrver2。HiveServer2支持一个新的命令行Shell,其称为Beeline。Beeline是一个命令行形式的JDBC客户端,用于连接HiveServer2。Hive 0.11版中加入了Beeline,在生产环境中推荐使用Beeline连接Hive。
③ HWI(Hive Web Interface):通过浏览器访问Hive。默认端口:9999。
(2)驱动(Driver)组件
该组件包括编译器(Compiler)、优化器(Optimizer)和执行引擎(Executor),它的作用是将HQL语句进行解析、编译优化,并生成执行计划,最后调用底层的MapReduce计算框架。
(3)元数据服务(Metastore)组件
Hive中的数据分为两部分,一部分是真实数据,一般存放在HDFS中;另一部分是真实数据的元数据,单独存储在关系型数据库中,如Derby、MySQL等。元数据用于存储Hive中的数据库、表、表模式、目录、分区、索引以及命名空间等信息,是对真实数据的描述。元数据会不断更新变化,所以不适合存储在HDFS中。实现任何对Hive真实数据的访问均须首先访问元数据。元数据对于Hive十分重要,因此Hive把Metastore服务独立出来,从而解耦Hive服务和Metastore服务,以保证Hive运行的健壮性。
注意
默认情况下,Hive会使用内置的Derby数据库,其只提供有限的单进程存储服务。此时,Hive不能执行2个并发的Hive CLI实例,通常被应用于开发、测试环境中。对于生产环境,需要使用MySQL或者类似的关系型数据库。