paimon实战-- 基于hive-catalog搭建paimon计算与存储环境

简介

Apache Paimon 作为新一代 流批一体数据湖存储 ,在实时写入、近实时更新、主键表等场景下表现突出。相比 Iceberg / Hudi,Paimon 更偏向 Streaming-first 的设计,非常适合实时数仓与湖仓融合架构。

本文基于真实生产环境落地经验,详细拆解一套:

Hive Catalog 统一管理 Paimon 元数据

Flink / Spark / Hive 多引擎安全、稳定访问同一份 Paimon 数据湖

一、为什么选择 Hive Catalog 管理 Paimon 元数据?

Paimon 支持多种 Catalog:

  • filesystem catalog

  • hive catalog

  • rest catalog(新)

1️⃣ filesystem catalog 的局限

虽然 filesystem catalog 部署简单,但在生产中存在明显问题:

  • 元数据仅存于文件系统

  • 多引擎并发访问一致性差

  • 不支持 Hive / Spark SQL 原生发现表

  • 运维治理能力弱

不适合多引擎、多人协作的生产环境


2️⃣ Hive Catalog 的优势(生产首选)

使用 Hive Metastore 作为 Paimon 的 Catalog:

  • 统一元数据中心(表 / schema / 分区)

  • Flink / Spark / Hive 共享同一套表定义

  • 支持 Hive / Spark SQL 直接查 Paimon 表

  • 成熟稳定,运维体系完善

本质上:Hive Metastore 只管元数据,数据仍由 Paimon 管理

二、整体架构设计

1️⃣ 架构总览

复制代码
        +-------------+
        |  Hive SQL   |
        +------+------+
               |
        +------+------+        +------------------+
        | Hive Meta  | <----> |  Paimon Metadata |
        |  Store     |        +------------------+
        +------+------+                 |
               |                        |
     +---------+----------+             |
     |                    |             |       
+----+-----+        +-----+----+     +----------+----+
| Flink SQL|        | Spark SQL|     |   HDFS / S3   |
+----------+        +----------+     +---------------+
  • Hive Metastore:统一元数据服务

  • Paimon:负责数据文件、快照、索引

  • HDFS / OSS / S3:数据与表目录存储

  • Flink / Spark / Hive:多引擎访问


三、基础环境准备

1️⃣ 组件版本建议(生产验证)

组件 推荐版本
Paimon 0.7.x / 0.8.x
Flink 1.17 / 1.18
Spark 3.3+
Hive Metastore 2.3.x / 3.1.x
Hadoop 3.x

⚠️ 注意:Spark 访问 Paimon 不依赖 Hive 执行引擎,只使用 Metastore。


2️⃣ Hive Metastore 要求

  • 独立部署 HMS(推荐)

  • MySQL / PostgreSQL 作为元数据库

  • 所有引擎 网络可达 HMS


四、Paimon + Hive Catalog 部署配置

1️⃣ 创建 Warehouse 目录

复制代码
hdfs:///warehouse/paimon

该目录下每个 database 对应一个子目录。


(1)准备依赖

将以下 jar 放入 Flink lib:

  • paimon-flink-*.jar

  • hive-exec-*.jar

  • hive-metastore-*.jar


sql 复制代码
CREATE CATALOG paimon_hive WITH (
  'type' = 'paimon',
  'metastore' = 'hive',
  'uri' = 'thrift://hms:9083',
  'warehouse' = 'hdfs:///warehouse/paimon'
);
复制代码
USE CATALOG paimon_hive;

sql 复制代码
/* primary key */
CREATE TABLE my_table_pk (
      user_id BIGINT,
      item_id BIGINT,
      behavior STRING,
      dt STRING,
      hh STRING,
      PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
);

📌 表定义会同步写入 Hive Metastore


五、Spark 访问 Hive Catalog 下的 Paimon 表

1️⃣ Spark 依赖准备

将以下 jar 放入 Spark classpath:

  • paimon-spark-3.3-*.jar

  • hive-metastore-*.jar


2️⃣ Spark SQL Catalog 配置

sql 复制代码
CREATE CATALOG paimon_hive
USING paimon
OPTIONS (
  'metastore' = 'hive',
  'uri' = 'thrift://hms:9083',
  'warehouse' = 'hdfs:///warehouse/paimon'
);
复制代码
USE paimon_hive;

3️⃣ Spark 查询 Paimon 表

sql 复制代码
SELECT dt, SUM(amount)
FROM dwd_order
GROUP BY dt;

📌 Spark 直接读取 Paimon 数据文件和快照。


六、Hive 访问 Paimon 表

Hive 不适合写入 Paimon,仅建议作为查询引擎。

1️⃣ Hive 依赖

  • paimon-hive-connector.jar

  • hive-exec-*.jar


2️⃣ Hive 外表映射

sql 复制代码
CREATE EXTERNAL TABLE dwd_order (
  order_id BIGINT,
  user_id BIGINT,
  amount DECIMAL(10,2)
)
PARTITIONED BY (dt STRING)
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
LOCATION 'hdfs:///warehouse/paimon/default.db/dwd_order';

之后即可使用 Hive SQL 查询。

相关推荐
不吃天鹅肉5 天前
数据湖Delta Lake 初试
大数据·数据湖
阿坤带你走近大数据10 天前
Paimon相关概念的介绍
flink·数据湖·paimon
递归尽头是星辰11 天前
不同架构层级下的多版本设计:从业务设计到微服务与大数据层
数据湖·乐观锁·mvcc·分布式架构·多版本控制
胖胖胖胖胖虎16 天前
Paimon Lookup Join 详解
flink·paimon
XSKY星辰天合17 天前
从“能存下”到“训得动”:XSKY XEOS 支撑头部 AI 实验室建设 EB 级数据湖
数据湖·对象存储·分布式存储
hf2000122 个月前
深入分析:Iceberg v3「删除向量(Deletion Vectors, DV)」如何缓解 CDC 场景写放大
大数据·spark·数据湖·湖仓一体·lakehouse
hf2000122 个月前
Apache Iceberg vs Apache Paimon :数据湖表格式深度对比与选型指南
大数据·spark·数据湖·湖仓一体·lakehouse
Henb9292 个月前
# Iceberg 数据湖实战
数据湖