本文是大数据系列第 12 篇,介绍 Hive 数据仓库的基本概念、架构原理,以及在三节点 Hadoop 集群上安装 Hive 2.3.9 的完整操作步骤。

完整图文版(含截图):CSDN 原文 | 掘金

什么是 Hive

Hive 是基于 Hadoop 的数据仓库工具,核心能力是将结构化数据文件映射为数据库表,并提供类 SQL 的查询语言(HiveQL),底层将 HQL 自动转换为 MapReduce 任务执行。

Hive 不是数据库,它没有自己的存储引擎——数据存在 HDFS,计算依赖 MapReduce/Tez/Spark。

核心特征

  • 读多写少:一次写入、多次读取,适合批量离线分析
  • SQL 方言:HiveQL 语法接近标准 SQL,降低学习门槛
  • 可扩展:支持自定义函数(UDF/UDAF/UDTF)
  • 容错:依托 HDFS 和 YARN 的容错机制

Hive 架构

客户端(CLI / JDBC / Web UI)

  HiveServer2(Thrift 服务)

  Driver(解析 → 编译 → 优化 → 执行)

  Metastore(元数据:表结构、分区、HDFS 路径)

  执行引擎(MapReduce / Tez / Spark)

  HDFS(实际数据存储)
组件职责
DriverSQL 解析、逻辑/物理计划生成
Metastore存储元数据(默认 MySQL/MariaDB)
HiveServer2对外暴露 JDBC/Thrift 接口
执行引擎将物理计划提交到 YARN 执行

优缺点分析

优点

  • 学习成本低,SQL 工程师可快速上手
  • 可处理 PB 级数据(MapReduce 水平扩展)
  • 支持 UDF,灵活扩展业务逻辑
  • 统一元数据管理,与 Spark/Impala 共享 Metastore

缺点

  • HQL 表达能力有限,复杂迭代计算难实现
  • MapReduce 执行效率低,延迟高(分钟级)
  • 自动生成的 MR 代码缺乏针对性优化
  • 调优困难,需要深入理解底层机制

安装 Hive 2.3.9

1. 下载与解压

tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt/servers/

2. 配置环境变量

编辑 /etc/profile,添加:

export HIVE_HOME=/opt/servers/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin

生效:

source /etc/profile

3. 安装并配置 MariaDB(存储元数据)

# 安装 MariaDB
sudo apt install mariadb-server -y

# 配置远程访问(修改绑定地址)
# 编辑 /etc/mysql/mariadb.conf.d/50-server.cnf
# 将 bind-address = 127.0.0.1 改为 0.0.0.0

# 创建 Hive 元数据库和用户
mysql -u root -p
CREATE DATABASE hive_meta DEFAULT CHARACTER SET utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive123';
GRANT ALL ON hive_meta.* TO 'hive'@'%';
FLUSH PRIVILEGES;

4. 配置 hive-site.xml

$HIVE_HOME/conf/ 目录下创建 hive-site.xml

<configuration>
  <!-- 元数据库连接 -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://h121.wzk.icu:3306/hive_meta?useSSL=false&amp;characterEncoding=UTF-8</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive123</value>
  </property>

  <!-- Hive 数据仓库路径 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>

  <!-- CLI 显示优化 -->
  <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.cli.print.header</name>
    <value>true</value>
  </property>
</configuration>

5. 安装 MySQL JDBC 驱动

mysql-connector-java-5.1.x.jar 复制到 $HIVE_HOME/lib/

6. 初始化元数据 Schema

schematool -dbType mysql -initSchema

成功后会在 MariaDB 中创建约 70 张 Hive 元数据表。

7. 验证安装

hive
# 进入 Hive CLI
hive> show databases;
# 输出: default

数据仓库默认路径

Hive 默认将数据存储在 HDFS 的 /user/hive/warehouse/ 目录下:

  • 数据库:/user/hive/warehouse/<db_name>.db/
  • 表:/user/hive/warehouse/<db_name>.db/<table_name>/

下一篇将介绍 Hive 的 DDL/DML 操作,包括建库、建表、数据导入等基础操作。