更新时间:2025-08-25 GMT+08:00

Catalog介绍

Iceberg Catalog是Iceberg的顶层组件,负责管理所有Iceberg表的元数据和元数据操作。 Catalog管理表的架构和元数据,提供了创建、查询和修改表的接口,是用户进行Iceberg表操作的入口点。用户可以通过它找到每个表当前元数据文件的位置,是读取和写入Iceberg表的关键组件。

当前DataArtsFabric SQL版本支持使用Hadoop Catalog作为Iceberg表的Catalog组件。

Hadoop Catalog

Hadoop Catalog不依赖外部系统,可以使用任意文件系统,它将当前表元数据文件路径记录在一个文件目录下。

因为Hadoop支持存算分离,底层的数据文件可以是HDFS或者是OBS对象系统等。

对Hadoop Catalog来讲,定位一个表的位置,只需要提供表的路径即可,因为表的元信息都存储在文件中。

LakeFormation Catalog

LakeFormation Catalog依赖LakeFormation元数据服务,由LakeFormation管理最新的快照信息。

LakeFormation Catalog采用乐观锁(OCC)机制,保证了多租场景下并发写的数据一致性。

当前在DataArtsFabric SQL上创建的Iceberg表均为LakeFormation Catalog表。

下图简述了LakeFormation Catalog的处理并发提交流程。

  1. 从LakeFormation上读取当前表快照信息,包括最新的MetaData File Path、SnapshotId等。
  2. 依据当前快照,写入新的数据。
  3. 加载最新快照。
  4. 检测数据冲突,如果发生数据冲突,则语句执行失败,否则尝试事务提交。
  5. 写入元数据,包括Manifest Files、Manifest List和MataData File。
  6. 将最新的MetaData FilePath和SnapshotId等提交给LF。如果提交失败,则从步骤3重试。