
# Catalog介绍
Iceberg Catalog是Iceberg的顶层组件，负责管理所有Iceberg表的元数据和元数据操作。 Catalog管理表的架构和元数据，提供了创建、查询和修改表的接口，是用户进行Iceberg表操作的入口点。用户可以通过它找到每个表当前元数据文件的位置，是读取和写入Iceberg表的关键组件。
当前DataArts Fabric SQL版本支持使用Hadoop Catalog作为Iceberg表的Catalog组件。
#### Hadoop Catalog
Hadoop Catalog不依赖外部系统，可以使用任意文件系统，它将当前表元数据文件路径记录在一个文件目录下。
因为Hadoop支持存算分离，底层的数据文件可以是HDFS或者是OBS对象系统等。
对Hadoop Catalog来讲，定位一个表的位置，只需要提供表的路径即可，因为表的元信息都存储在文件中。
#### LakeFormation Catalog
LakeFormation Catalog依赖LakeFormation元数据服务，由LakeFormation管理最新的快照信息。
LakeFormation Catalog采用乐观锁（OCC）机制，保证了多租场景下并发写的数据一致性。
当前在DataArts Fabric SQL上创建的Iceberg表均为LakeFormation Catalog表。
下图简述了LakeFormation Catalog的处理并发提交流程。
![](https://support.huaweicloud.com/devg-fabric/figure/zh-cn_image_0000002482710609.png "点击放大")
1. 从LakeFormation上读取当前表快照信息，包括最新的MetaData File Path、SnapshotId等。
2. 依据当前快照，写入新的数据。
3. 加载最新快照。
4. 检测数据冲突，如果发生数据冲突，则语句执行失败，否则尝试事务提交。
5. 写入元数据，包括Manifest Files、Manifest List和MetaData File。
6. 将最新的MetaData File Path和SnapshotId等提交给LF。如果提交失败，则从步骤3重试。
 
