Hive是什么

Apache Hive 是一个面向大规模数据的SQL数据仓库系统。它把分布式存储中的文件组织成表,并允许用户通过SQL完成数据查询、汇总和分析。Hive 的核心价值是:用接近传统数据库的 SQL,处理传统数据库难以承载的海量数据

Hive 负责”怎么定义、怎么查、怎么管理海量数据”,底层存储和计算则由其他系统承担。


1. Hive架构

                 用户 / 应用
          ┌─────────────────────┐
          │ Beeline / JDBC/ODBC │
          │ BI工具 / SQL脚本     │
          └──────────┬──────────┘
                     │ SQL
                     ▼
          ┌─────────────────────┐
          │    HiveServer2      │
          │ 连接、会话、认证     │
          └──────────┬──────────┘
                     ▼
          ┌─────────────────────┐
          │ Driver / Compiler   │
          │ 解析 → 优化 → 执行计划│
          └──────┬────────┬─────┘
                 │        │
                 ▼        ▼
          ┌──────────┐ ┌──────────────┐
          │ Metastore│ │ 执行引擎      │
          │ 元数据    │ │ Tez / MR     │
          └────┬─────┘ └──────┬───────┘
               │              │
               ▼              ▼
          ┌──────────┐ ┌──────────────┐
          │ 元数据DB │ │ YARN         │
          │ MySQL等  │ │ 资源调度     │
          └──────────┘ └──────┬───────┘
                              ▼
                       ┌──────────────┐
                       │ HDFS / 云存储 │
                       │ ORC / Parquet│
                       └──────────────┘

Hive 官方将 Driver、Compiler、Metastore、SerDe 和执行框架列为核心组成部分;现代部署通常通过 HiveServer2 接收客户端请求,并由 Tez 或 MapReduce 等执行引擎完成计算。

1.1.SQL是怎么执行的

SELECT province, COUNT(*)
FROM orders
WHERE dt = '2026-09-04'
GROUP BY province;

为例:

  1. 提交 SQL:用户通过 Beeline、JDBC 或 BI 工具发送查询。

  2. 解析与编译:Hive将SQL解析为语法树,检查表、字段和权限,并生成执行计划。

  3. 读取元数据:从Metastore获取表结构、分区位置、文件格式等信息。

  4. 优化计划:例如利用分区条件 dt = '2026-09-04',减少需要扫描的数据。

  5. 提交执行:执行计划交给Tez 或 MapReduce 等引擎运行。

  6. 扫描与聚合:读取数据文件,过滤、分组、统计。

  7. 返回结果:结果通过 HiveServer2 返回客户端。

2.Hive数据组织方式

2.1数据库 → 表 → 分区 → 数据文件

database
  └── table
       └── partition: dt=2026-09-04
            └── partition: province=Tokyo
                 └── ORC / Parquet / CSV 文件

Hive 的数据组织层级包括数据库、表和分区。分区用于按某些字段组织数据,常用于时间、地区等维度。

2.2文件格式

Hive 并不要求一种固定的“Hive 文件格式”,可以使用 CSV、TSV、ORC、Parquet 等格式。生产数仓中常见的是 ORC / Parquet + 压缩 + 分区。

3. Hive应用场景

3.1离线数仓与ETL

将日志、业务库、埋点等数据加工成统一的明细层、汇总层和主题数据集市。
例如:ODS → DWD → DWS → ADS。

3.2报表与经营分析

按天、周、月统计销售额、用户数、订单数、转化率等指标。
例如:每日经营报表、区域销售分析、财务汇总。

3.3海量日志与行为分析

对网站访问、App 埋点、服务器日志、广告曝光等进行批量统计。
例如:UV/PV、留存、漏斗、渠道效果分析。

3.4数据准备与特征工程

为机器学习、推荐系统、风控系统准备大规模训练数据和特征。
例如:用户画像、行为特征、训练样本生成。

3.5数据湖与统一元数据管理

在 HDFS 或云对象存储上管理海量表数据,为 Hive、Spark、Impala 等工具提供共享元数据。

例如:数据湖表目录、跨引擎查询、湖仓数据管理。
这些场景对应 Hive 官方定位的 ETL、报表、数据分析和大规模数据管理能力。Hive Metastore 也可作为现代数据湖中的中心元数据仓库。

4.典型企业数据链路

业务数据库 / 日志 / Kafka
            │
            ▼
       数据采集
            │
            ▼
     HDFS / 对象存储
            │
            ▼
      Hive ODS 层
            │
            ▼
      Hive DWD 层
    清洗、去重、标准化
            │
            ▼
      Hive DWS 层
     主题汇总、指标计算
            │
            ▼
      Hive ADS 层
    报表、分析、数据服务
            │
            ▼
     BI / Spark / SQL查询

核心思想:Hive不是整个大数据平台,而是数仓中的 SQL 处理与数据管理层