1. Catalog 选型概述:什么是数据 Catalog、为什么需要 Catalog、主流产品对比

各位同学,咱们今天聊一个很实在的话题——数据 Catalog 选型。

我做了这么多年数据平台,见过太多团队一上来就撸代码建表、写 ETL,结果半年后连自己有哪些表都说不清楚。嗯,这时候 Catalog 的价值就体现出来了。

1.1 什么是数据 Catalog?

说白了,数据 Catalog 就是一本「数据字典」。但它比字典能干多了。

你想想看,一个企业里可能有几千张表、几万个字段。谁建的?什么类型?怎么来的?哪些是敏感字段?没有 Catalog,这些信息全在人的脑子里。人一走,信息就断了。

我个人习惯把 Catalog 理解成三层:

  • 元数据存储层——存表结构、分区、格式这些基础信息
  • 权限管理层——谁能看、谁能改、谁能删
  • 发现与治理层——数据血缘、标签、搜索、质量监控

大部分开源产品只做到第一层,商业产品会覆盖后两层。选型的时候,你得想清楚自己要哪几层。

核心观点:Catalog 不是「要不要」的问题,而是「什么时候上、上多深」的问题。项目初期可能一个 Hive Metastore 就够了,但到了跨团队、跨云、跨引擎的阶段,没有统一 Catalog 就是灾难。

1.2 为什么需要 Catalog?

我在项目中遇到过最典型的场景:

一个数据分析师跑过来问:「咱们那个用户画像表在哪?」我查了半天,发现三个团队各建了一张同名表,字段定义还不一样。你说这数据谁敢信?

Catalog 解决的就是这类问题。具体来说:

  1. 统一元数据视图——不管数据在 HDFS、S3 还是本地,一个入口查所有
  2. 权限集中管控——别再到处贴权限申请单了,Catalog 里一次配好
  3. 数据血缘追踪——这张表从哪来的、下游被谁用了,一目了然
  4. 降低沟通成本——新人上手不用挨个问「这个字段啥意思」

我的经验:如果团队超过 10 个人做数据开发,或者数据表超过 200 张,就应该上 Catalog。别等到数据沼泽形成了再治理,那成本高得多。

1.3 主流 Catalog 产品对比

市面上常见的 Catalog 产品,我挑四个有代表性的聊聊:Hive Metastore、AWS Glue、Unity Catalog、Polaris。它们代表了不同的设计思路。

特性 Hive Metastore AWS Glue Unity Catalog Polaris
开源/商业 开源 商业(AWS) 商业(Databricks) 开源(Apache)
存储后端 RDS/MySQL AWS 托管 Databricks 托管 PostgreSQL
权限模型 简单(基于 HDFS) IAM + Lake Formation 细粒度 RBAC 细粒度 RBAC
多引擎支持 Hive/Spark Athena/EMR/Redshift Spark/Databricks SQL Spark/Trino/Flink
数据血缘 无 有限 内置 无
适用场景 传统 Hadoop 数仓 AWS 原生生态 Databricks 湖仓 开源湖仓(Iceberg)

我来逐个拆解一下:

Hive Metastore

老牌产品了。我最早做数仓的时候用的就是它。优点是稳定、简单,缺点也很明显——没有权限控制、没有血缘、跨引擎支持差。说白了,它就是个「元数据数据库」,不是真正的 Catalog。

如果你还在用 Hive + Spark 的传统架构,HMS 够用。但一旦引入 Trino、Flink 这些引擎,你就得自己折腾兼容性了。

AWS Glue

AWS 全家桶用户的首选。Glue Catalog 跟 Athena、EMR、Redshift 集成得很好,爬虫功能也挺方便。但有个坑——它跟开源生态的兼容性一般。你如果想把 Glue Catalog 的数据拉到自建 Spark 集群上用,得额外写不少代码。

我曾经帮一个客户从 Glue 迁移到开源方案,光是元数据导出就折腾了两周。嗯,这里要注意。

Unity Catalog

Databricks 的旗舰产品。权限模型做得非常细,能精确到行级、列级。血缘追踪也是内置的,不用额外配置。但它是商业产品,价格不便宜。而且一旦用了 Unity Catalog,基本就被绑定在 Databricks 生态里了。

我个人建议:如果你的数据平台已经重度依赖 Databricks,Unity Catalog 是首选。否则,慎重。

Polaris

Apache 基金会的新项目,专门为 Iceberg 设计的 Catalog。开源、支持多引擎、权限模型也够用。目前还在快速迭代中,生产环境案例不算多,但潜力很大。

我最近在做一个新项目,就在评估 Polaris。它的设计理念很干净——只做 Catalog 该做的事,不绑定计算引擎。这一点我很欣赏。

避坑指南:我曾经见过一个团队,因为贪图 Glue 的爬虫方便,把所有元数据都扔进去了。后来想迁移到开源 Trino 集群,发现 Glue 的 API 跟 Trino 的 Hive Metastore 接口不兼容,数据查不出来。最后只能写脚本全量同步,每天跑一次,延迟大不说,还经常出问题。

所以选型的时候,一定要想清楚:你未来可能用到哪些引擎?这些引擎跟 Catalog 的兼容性如何?

1.4 知识体系总览

下面这张图,我把 Catalog 的核心概念和选型逻辑串起来了。你一看就明白。

Catalog 选型知识体系 Catalog 选型知识体系 数据 Catalog 元数据存储 权限管理 数据治理 Hive Metastore AWS Glue Unity Catalog Polaris 选型关键因素:引擎兼容性 | 权限粒度 | 开源/商业 | 运维成本 | 生态绑定

从这张图你能看到,Catalog 的核心能力是三层,四个产品各有侧重。选型的时候,先看你的引擎生态,再看你的治理需求,最后算成本。

我的建议:别一上来就追求大而全。先跑通一个最小闭环——元数据能查、权限能控、血缘能追。后面再慢慢加功能。很多项目死在「想一步到位」上。

好了,这一章的内容就到这。Catalog 选型是个系统工程,后面几章我会带你深入每个产品的细节和实战配置。咱们下章见。