Hive 软件架构

2、Hive:启动Hive Hive:启动Hive 阅读详情

Hive 的软件架构是一个典型的 分层、模块化、可插拔 的设计,核心目标是将 类 SQL 查询(HiveQL) 转换为底层分布式计算引擎(如 MapReduce、Tez、Spark)可执行的任务,并利用 元数据服务(Metastore) 管理表结构与数据位置。

以下是 Hive 软件架构的详细拆解(基于 Apache Hive 官方设计):


一、整体架构图

graph TD
    A[用户接口] --> B[Hive Driver]
    B --> C[Compiler]
    B --> D[Optimizer]
    B --> E[Executor]
    
    C --> F[Parser]
    C --> G[Semantic Analyzer]
    C --> H[Logical Plan Generator]
    C --> I[Physical Plan Generator]
    
    D --> J[Rule-Based Optimizer<br>(谓词下推、列裁剪等)]
    
    E --> K[Execution Engine<br>(MapReduce / Tez / Spark)]
    
    C & D & E --> L[Metastore]
    L --> M[(RDBMS: MySQL/PostgreSQL)]
    
    K --> N[HDFS / S3 / OBS]

二、核心组件详解

1. 用户接口(User Interfaces)

Hive 提供多种方式提交查询:

  • CLI(Command Line Interface):早期交互式命令行(已逐步淘汰)
  • Beeline:基于 JDBC 的轻量级 CLI,推荐使用
  • JDBC/ODBC Server:支持 BI 工具(如 Tableau、Superset)连接
  • Thrift Server:提供跨语言 RPC 接口(HiveServer2)

✅ HiveServer2 是现代部署的核心服务,支持多客户端并发、身份认证(Kerberos/LDAP)、会话管理。


2. Driver(驱动器)

  • 是 Hive 的“大脑”,协调整个查询生命周期
  • 主要职责:
    • 接收用户查询
    • 调用 Compiler 编译
    • 调用 Optimizer 优化
    • 调用 Executor 执行
    • 返回结果给客户端

3. Compiler(编译器)

将 HiveQL 转换为可执行计划,包含四个阶段:

阶段功能
Parser(解析器)将 HiveQL 字符串解析为 抽象语法树(AST)
Semantic Analyzer(语义分析器)检查表/列是否存在、类型是否匹配、权限是否足够;
从 Metastore 获取元数据;
生成 逻辑执行计划(Operator Tree)
Logical Plan Generator构建逻辑操作符树(如 Filter → Select → GroupBy)
Physical Plan Generator将逻辑计划转换为 物理执行计划(如 MapReduce Job DAG)

4. Optimizer(优化器)

  • 对逻辑/物理计划进行优化,提升执行效率
  • 主要优化策略(Rule-Based):
    • 谓词下推(Predicate Pushdown):将 WHERE 条件尽量下推到数据读取层(减少 I/O)
    • 列裁剪(Column Pruning):只读取 SELECT 中用到的列(尤其对列式存储有效)
    • Map Join 自动转换:小表自动转为 Map-side Join,避免 Reduce
    • 分区裁剪(Partition Pruning):根据 WHERE 条件跳过无关分区
    • 合并小文件(CombineInputFormat)

💡 Hive 3.0+ 引入了 CBO(Cost-Based Optimizer),基于统计信息(如行数、列分布)做更智能优化。


5. Executor(执行器)

  • 负责调度和监控物理计划的执行
  • 将任务提交给底层 Execution Engine
  • 监控任务状态、处理失败重试、收集日志

6. Execution Engine(执行引擎)—— 可插拔

Hive 支持多种计算引擎,通过 hive.execution.engine 配置:

引擎特点适用场景
MapReduce默认引擎,稳定但慢兼容性要求高、资源充足
TezDAG 执行模型,减少中间落盘推荐用于 Hive 数仓(Facebook 出品)
Spark内存计算,速度快与 Spark 生态集成(如 Spark SQL + Hive Metastore)

✅ Tez 是 Hive 性能提升的关键:将多个 MapReduce Job 合并为一个 DAG,避免不必要的 HDFS 写入。


7. Metastore(元数据服务)

  • Hive 的“目录”,存储所有数据库、表、分区、列、SerDe、存储路径等元信息
  • 不存储实际数据,只存储“数据在哪里、长什么样”
架构模式:
模式描述适用场景
Embedded(内嵌)Metastore 与 Hive Driver 同进程,使用 Derby DB仅本地测试
Local(本地)Hive 与 Metastore 同进程,但连接 MySQL/PG开发环境
Remote(远程)Metastore 独立服务,Hive 通过 Thrift API 访问生产环境(高可用、多客户端共享)

📌 生产环境必须使用 Remote Metastore + MySQL/PostgreSQL,并配置主备或集群。


8. 数据存储层(Storage Layer)

  • 实际数据存储在 HDFS / Amazon S3 / Aliyun OSS / Azure Blob 等分布式文件系统

  • Hive 表 = HDFS 目录 + 元数据描述

    # 示例:Hive 表在 HDFS 的路径
    /user/hive/warehouse/mydb.db/orders/dt=20241106/
    
  • 支持多种 SerDe(Serializer/Deserializer) 解析不同格式:

    • LazySimpleSerDe:TextFile
    • OrcSerDe:ORC 文件
    • ParquetHiveSerDe:Parquet 文件
    • JsonSerDe:JSON 日志

三、关键数据流示例(以 SELECT * FROM orders WHERE dt='20241106' 为例)

  1. 用户通过 Beeline 提交 HiveQL
  2. HiveServer2 接收请求,交给 Driver
  3. Compiler:
    • Parser 生成 AST
    • Semantic Analyzer 查询 Metastore,确认 orders 表存在,dt 是分区字段
    • 生成逻辑计划:TableScan → Filter → Select
  4. Optimizer:
    • 分区裁剪:只扫描 dt='20241106' 分区
    • 列裁剪:因 SELECT *,保留所有列
  5. Physical Plan Generator:生成 Tez DAG
  6. Executor 提交 Tez 任务到 YARN
  7. Tez 从 HDFS 读取 /warehouse/orders/dt=20241106/ 数据
  8. 结果返回给 Beeline

四、Hive 架构优势与挑战

✅ 优势

  • SQL 友好:降低大数据分析门槛
  • 可扩展:支持自定义 UDF、Storage Handler、SerDe
  • 生态兼容:与 Hadoop、Spark、Flink(通过 HMS)无缝集成
  • 成熟稳定:经过超大规模生产验证(Facebook、阿里、腾讯)

⚠️ 挑战

  • 延迟高:Job 启动开销大,不适合交互式查询
  • Metastore 单点瓶颈:高并发时需分库分表或使用 HMS HA
  • 小文件问题:分区过多导致 NameNode 压力大
  • ACID 支持有限:虽有 Hive 3.0+ ACID,但性能和功能不如传统数据库

✅ 总结

Hive 的软件架构 = SQL 解析器 + 元数据管理 + 可插拔执行引擎 + 分布式存储抽象
它通过 解耦查询逻辑与物理执行,实现了“一次建模,多引擎运行”的灵活性,成为企业离线数仓的基石。
虽然新兴引擎(如 Trino、Doris)在交互式场景崛起,但 Hive 在 ETL、批处理、大规模数据加工 领域仍不可替代。

📌 学习建议:理解 Hive 架构,重点掌握 Metastore 作用、执行计划生成过程、Tez/Spark 引擎差异,这对调优和排错至关重要。

[Hive]五、Hive 源码编译 G:\Bigdata\2.hive\大数据技术之Hive源码编译。 阅读详情

相关推荐

hive 重启后台hive服务

停止hive [root@zjj101 conf]# jps 22353 NodeManager 90933 DataNode 22105 ResourceManager 90808 NameNode 41900 Jps 77644 RunJar [root@zjj101 conf]# kill -9 77644 [root@zjj101 conf]# 启动hive shell命令: [root@zjj101 conf]# nohup hive --service hiveserver2 &

张俊杰 的博客 9018

Hive架构图

hive1

qq_66563605的博客 1553

【Hive】Mac安装Hive

一. 安装 hive安装:brew install hive mysql安装:brew install mysql 启动mysql:bash mysql.server start 二. 元数据库配置 Hive默认用derby作为元数据库。这里我们用mysql来存储元数据,下面作一些初始化配置 登录mysql:mysql -u root 创建数据库:create database metast...

藏经阁 | 玄苦 1213

Hive的架构原理及组成

一、Hive架构图 二、架构组成 (1)、用户接口:Client CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive)、WEBUI(浏览器访问 hive) (2)、元数据:Metastore 元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、 表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Metastore (3)、Hadoop 使用 HDFS 进行存

hunter95671的博客 8468

Flink集成Hive之Hive Catalog与Hive Dialect

本文分享,将继续介绍Flink集成Hive的另外两个概念:Hive Catalog与Hive Dialect。本文包括以下内容,希望对你有所帮助。 什么是Hive Catalog 如何使用Hive Catalog 什么是Hive Dialect 如何使用Hive Dialect 什么是Hive Catalog 我们知道,Hive使用Hive Metastore(HMS)存储元数据信息,使用关系型数据库来持久化存储这些信息。所以,Flink集成Hive需要打通Hive的metastore,去管理Fl

微信搜:import_bigdata,大数据领域硬核原创作者 1694

Hive Metastore、Hive server和Hive thrift服务

Hive Metastore、Hive server和Hive thrift服务介绍

JustinMars的博客 1359

Hive体系结构

本文整理自阿里数据平台的官方博客:http://www.alidata.org/archives/category/cloud-computing/hive     1、Hive架构与基本组成     下面是Hive的架构图。 图1.1 Hive体系结构     Hive的体系结构可以分为以下几部分:     (1)用户接口主要有三个:CLI,Client 和 WUI。其中最

Jack Zhou的专栏 2万+

海思MIPI屏调试实战:从参数计算到点亮屏幕的完整指南

本文提供了一份海思平台MIPI屏幕调试的完整实战指南。文章以Hi3516DV300调试800x1280分辨率屏幕为例,详细讲解了从参数计算、配置文件修改到最终点亮屏幕的全流程,并分享了常见问题排查与进阶优化技巧,旨在帮助嵌入式开发者高效解决MIPI屏调试难题。

weixin_29190573的博客 736

Hive入门学习之一:Hive的简述与架构

Hive架构与基本组成     下面是Hive的架构图。 图1.1 Hive体系结构     Hive的体系结构可以分为以下几部分:     (1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式

不积跬步,无以至千里;不积小流,无以成江海! 4752

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理 在物流行业种,托盘是标准化运输的关键的配件,而容器存在丢失、盘点、闲置等管理问题。如何通过信息化的手段提升容器的寿命,提高调配效率,降低闲置是物流容器行业的关键点。 金桔蓝牙网关配合金桔蓝牙资产管理终端可以解决物流行业痛点问题。 容器管理面临的问题: 技术方案 场景描述之库房 场景描述之车辆 场景描述之终端 方案优势 ...

jinjufocus的博客 1180

OpenGL纹理贴图

OpenGL纹理1. 基本概念2. 纹理环绕方式3. 纹理过滤3.1 GL_NEAREST3.2 GL_LINEAR3.3 多级渐远纹理 (Mipmap)4. 纹理加载与创建4.1 纹理加载4.2 纹理创建4.3 纹理的使用 1. 基本概念 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来表示物体的细节特征,希望绘制一个有足够多细节的物体,当然可以用足够多的顶点颜色来描述,但是无疑也增加了许多额外的开销;另一种办法就是使用纹理。 学习之前先展示一张实现的纹理图以更好理解纹理! 还是这张图为了将纹

牵LV小猪精的博客 8927

【Hive】

建立在Hadoop之上结构化、半结构化数据文件映射成一张数据库表HQL转换成MapReduce。

想当运维的程序猿 3562

智能车竞赛循迹控制:基于状态机的直道、弯道、十字路口处理策略

在嵌入式系统与自动控制领域,PID控制算法是实现精确运动控制的基础。其原理是通过比例、积分、微分三个环节的线性组合,对系统误差进行实时校正,从而实现对目标值的快速、稳定跟踪。这项技术的核心价值在于为各类自动控制系统提供了稳定、可靠且易于实现的解决方案,广泛应用于机器人、无人机、工业自动化等场景。在智能车循迹这类特定应用中,赛道环境复杂多变,单一的PID控制器难以应对直道、弯道、十字路口等不同赛道元素的控制需求。此时,有限状态机(FSM)作为一种高效的**决策框架**,能够根据实时感知的赛道特征(如边线曲率、

weixin_34034261的博客 282

Hive软件架构及关键组件解析

总而言之,Hive 的架构巧妙地利用 Hadoop 的存储和计算能力,通过 Metastore 管理元数据,将类 SQL 查询转换成分布式计算任务,为大数据分析提供了一个强大且熟悉的接口。能力,同时隐藏了底层分布式计算的复杂性。Hive 的软件架构是一个经典的。模型,核心设计理念是将。

走过冬季 1049

ESP32-CAM入门教程

ArduinoESP32-CAM下载模块(接上USB就能用,很方便,如果没有买就只有资金用USB-TTL了)如下图两个合在一起如下图。

qq_48778364的博客 3万+

用STM32H7的FMC+AD7606搭建多通道数据采集系统:两种工作模式(查询与FIFO中断)的代码详解与性能对比

本文详细解析了基于STM32H7微控制器和AD7606 ADC芯片的多通道数据采集系统设计,重点对比了查询模式与FIFO中断模式的实现方法与性能差异。通过FMC总线实现高速并行数据采集,系统支持16bit同步采样,最高可达200Ksps/通道。文章提供了完整的代码实现和优化策略,帮助工程师在工业监测等实时性要求高的场景中构建可靠的数据采集方案。

weixin_30599769的博客 485

从Hive on YARN到Hive on Spark

本实战通过配置 Hive 与 Spark 集成,分别基于 YARN(MapReduce)和 Spark 引擎执行词频统计任务,验证了 Hive on Spark 在查询性能上的显著优势,同时展示了 Hadoop、Hive 和 Spark 的协同部署与关键配置步骤。

howard2005的专栏 1778

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4428

【Hive】Hive安装

第二章 Hive安装第三章 DDL(Data Definition Language)数据定义第四章 DML(Data Manipulation Language)数据操作第五章 Hive查询第六章 Hive的基础知识第七章 Hive函数第八章 分区表和分桶表第九章 文件格式和压缩第十章 企业级调优附录:常见错误及解决方案。

weixin_44917201的博客 1397

SAP 费用化采购订单简介

费用性采购的核心特点费用性采购的流程费用性采购的优势适用场景业务场景前台操作1、创建成本中心---KS012、创建采购订单---ME21N3、采购订单审批---ME29N4、采购订单收货---MIGO5、查看成本中心费用---S_ALR_870136116、控制费用化的采购订单自动带出科目和成本中心SAP费用性采购(Expense Procurement)指的是企业在采购过程中,直接将采购的物料或服务成本计入费用科目,而不是记入库存账户的采购行为。

我小时候很黑的博客 2016

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hive on spark 还是 spark on hive?

在运行sql的时候,hive on spark 还是 spark on hive 到底是什么呢?它们是一个东西吗?区别是什么?

chashugu2022的博客 2288

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Hive配置

hive配置

qq_51180928的博客 1372

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Hive学习——单机版Hive的安装

Hive学习——单机版Hive的安装

雷神乐乐的博客 3094

Hive——hive安装

1、Hive安装地址 1.Hive官网地址 http://hive.apache.org/ 2.文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3.github地址 https://github.com/apache/hive 2、Hive安装...

qq_41544550的博客 442

hive简介及hive+mysql 初始化

1、Hive简介 Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用戶查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reduc...

lty_sky的专栏 1427

hive的配置

Hive安装的前提: -安装JDK 1.8.0_181 查看方法 window+r cmd 进入 输入命令 java -version -安装 Hadoop-2.4.1 查看方法 Hadoop里面输入命令 Hadoop version -安装MySQL 5.7.17 登录mysql即可看到版本信息 一安装: 1.下载hive最新稳定版本的包,并压缩到用户主目录下面 : tar -xzvf apache-hive-2.1.1-bin.tar.gz ...

weixin_57405721的博客 2582
上一篇: 缓慢变化维表如何处理
下一篇: 什么是SMB Join
走过冬季
博客等级 码龄9年 1609粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走过冬季

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值