2、主流Catalog技术选型:Hive Metastore、AWS Glue、Apache Polaris、Unity Catalog对比

做数据湖仓,选哪个Catalog,其实是个挺头疼的事。

我见过不少团队,一开始随便选一个,后面迁移的时候痛不欲生。说白了,Catalog就是湖仓的“大脑”,它管着所有表的元数据。你选错了,后面改起来成本极高。

今天咱们就把四个主流选手拉出来遛遛:Hive Metastore、AWS Glue、Apache Polaris、Unity Catalog。我会结合我自己的踩坑经历,给你讲清楚它们的优缺点和适用场景。

核心观点:没有最好的Catalog,只有最适合你当前架构的Catalog。选型前,先想清楚你的团队规模、云环境、以及对开放性的要求。

2.1 Hive Metastore:老牌劲旅,但有点“过时”

Hive Metastore(简称 HMS)是 Hadoop 生态的老祖宗。几乎所有 Spark、Hive、Presto 引擎都默认支持它。

它的架构很简单:一个中央数据库(通常是 MySQL/PostgreSQL)存元数据,一个 Thrift 服务对外提供接口。

优点:

  • 生态兼容性极强:几乎所有开源计算引擎都原生支持。
  • 部署简单:一个 MySQL + 一个 Java 服务就能跑起来。
  • 社区成熟:遇到问题,网上随便一搜就有答案。

缺点:

  • 不支持多表事务:HMS 本身没有事务机制。多个任务同时写同一张表,很容易出问题。
  • 性能瓶颈:元数据操作(比如列举分区)在高并发下会变慢。我遇到过 HMS 的 Thrift 服务在 500 并发时直接挂掉。
  • 缺乏细粒度权限:它只能做库/表级别的授权,列级、行级权限?想都别想。
  • 不支持跨集群共享:每个集群都得单独部署一套 HMS,数据共享很麻烦。

我的建议:如果你还在用 CDH/HDP 老集群,或者只是做简单的 ETL 开发,HMS 够用。但如果你要做实时湖仓、多引擎协同,我建议你尽早考虑迁移。

2.2 AWS Glue Catalog:云原生首选,但被绑定

AWS Glue Catalog 是亚马逊云上的托管元数据服务。它本质上是一个 Serverless 的 Hive Metastore 兼容实现。

我用 Glue Catalog 做过一个实时数仓项目,说实话,真香。但后来想迁移到其他云,就发现被绑死了。

优点:

  • 零运维:完全托管,不用管服务器、不用管数据库。
  • 自动发现:Glue Crawler 能自动扫描 S3 上的数据,自动建表。这个功能我特别喜欢,省了很多手工活。
  • 与 AWS 生态深度集成:Athena、EMR、Redshift Spectrum 都能直接用。
  • 支持事务:通过 Lake Formation 可以实现 ACID 事务。

缺点:

  • 厂商锁定:这是最大的问题。你一旦用了 Glue Catalog,就很难迁移到其他云或自建环境。
  • 成本不透明:Glue Catalog 本身免费,但 Crawler 和 ETL 作业是按小时收费的。我见过一个团队因为 Crawler 配置不当,一个月花了 2 万美金。
  • 权限管理复杂:Lake Formation 的权限模型和 IAM 混在一起,排查问题很头疼。
特性 Hive Metastore AWS Glue Catalog
部署方式 自建 托管
事务支持 不支持 支持(通过 Lake Formation)
厂商锁定 无 强
性能 中等 高
适用场景 传统 Hadoop 集群 AWS 云原生

2.3 Apache Polaris:开放的新星,但还不够成熟

Apache Polaris 是 Netflix 开源的一个 Catalog 实现,后来捐给了 Apache 基金会。它的核心卖点是开放和多引擎兼容。

我记得第一次看到 Polaris 的架构图时,觉得它把 Iceberg REST Catalog 规范实现得真漂亮。它天生就是为 Iceberg 设计的。

优点:

  • 完全开放:基于 Iceberg REST Catalog 规范,任何支持该规范的引擎都能接入。
  • 多租户:原生支持多租户隔离,适合做数据平台。
  • 细粒度权限:支持 RBAC,可以做到列级权限控制。
  • 高性能:元数据操作做了大量优化,比 HMS 快很多。

缺点:

  • 社区还不够大:相比 HMS 和 Glue,Polaris 的社区还比较小,遇到问题可能找不到答案。
  • 部署复杂:需要自己部署和维护,对运维能力有要求。
  • 生态还在完善:有些引擎对 Iceberg REST Catalog 的支持还不够好。

避坑指南:我曾经在一个项目中尝试用 Polaris 替换 HMS,结果发现 Presto 的旧版本不支持 Iceberg REST Catalog,导致查询失败。所以,如果你要用 Polaris,一定要先确认你的所有引擎版本都兼容。

2.4 Unity Catalog:Databricks 的“全家桶”

Unity Catalog 是 Databricks 推出的统一元数据治理方案。它不仅仅是一个 Catalog,更是一个完整的数据治理平台。

我用 Unity Catalog 做过一个大型数据平台,它的血缘追踪和审计功能确实强大。但代价就是,你几乎离不开 Databricks 了。

优点:

  • 统一治理:一个地方管理所有元数据、权限、血缘、审计。
  • 细粒度权限:支持行级、列级、甚至文件级别的权限控制。
  • 自动血缘:自动追踪数据从哪里来、到哪里去,对数据治理很有帮助。
  • 高性能:底层使用 Delta Lake 的元数据管理,性能很好。

缺点:

  • 厂商锁定:这是最严重的。Unity Catalog 是 Databricks 的专有产品,无法迁移到其他平台。
  • 成本高:需要购买 Databricks 的 Premium 或 Enterprise 版本,价格不菲。
  • 学习曲线陡:它的概念很多,比如 Catalog、Schema、Volume、Model,新手容易搞混。

2.5 选型决策矩阵

说了这么多,到底怎么选?我整理了一个决策矩阵,你可以根据自己的情况对号入座。

评估维度 Hive Metastore AWS Glue Apache Polaris Unity Catalog
开放性 高 低 高 低
运维成本 高 低 中 低
性能 中 高 高 高
权限粒度 低 中 高 高
厂商锁定 无 强 无 强
适用场景 传统 Hadoop AWS 云原生 开放湖仓 Databricks 平台

我的个人建议:

  • 如果你在 AWS 上,且不打算迁移,选 AWS Glue Catalog。
  • 如果你在 Databricks 上,且预算充足,选 Unity Catalog。
  • 如果你追求开放、多引擎兼容,选 Apache Polaris。
  • 如果你只是做简单的离线数仓,Hive Metastore 还能再撑几年。

2.6 核心架构对比图

下面这张图,我画了四个 Catalog 的核心架构对比。你可以直观地看到它们的差异。

四大 Catalog 核心架构对比 Hive Metastore Thrift API MySQL/PostgreSQL AWS Glue Catalog REST API (Hive兼容) AWS 托管存储 Apache Polaris Iceberg REST API 自建数据库 Unity Catalog Databricks API Delta Lake 元数据 说明 HMS 和 Polaris 是开放的,可以自建;Glue 和 Unity Catalog 是托管的,但厂商锁定严重。

2.7 总结

Catalog 选型,说白了就是一场权衡。你要在开放性、运维成本、性能、厂商锁定之间找到平衡点。

我个人更倾向于开放方案,因为数据资产不应该被绑定在某个平台上。但如果你团队小、预算足,托管方案确实省心。

嗯,记住一点:选型前,先想清楚未来 3 年的架构规划。Catalog 迁移的成本,远比你想象的高。