LAS 为您提供 LAS Catalog 元数据备份与恢复工具 lf-exporter,您可使用此工具实现元数据(catalog、database、table、partition、function)的同地域、跨地域灾备。本文为您介绍 lf-exporter 工具的使用要点和灾备方案建议。
工作原理
LAS Catalog 元数据备份与恢复工具 lf-exporter 以 火山引擎 EMR Serverless Spark 作业运行,您在获取工具包后,通过配置 YAML 配置文件,提交EMR Serverless Spark 作业来调用 lf-exporter 工具,实现 LAS Catalog 元数据备份与恢复。
其中,YAML 配置文件中参数 mode用于指定 LAS Catalog 元数据的备份与恢复的运行模式,支持以下四种场景元数据的备份与恢复。
mode | 语义 | 典型用途 |
|---|
las_to_tos
| 从 LAS Catalog 读取元数据并备份到 TOS(JSON 格式),详情请参见下文的参考文档:参考:配置参数列表。 | 日常备份、跨 Region 灾备的备份侧 |
tos_to_las
| 从 TOS 备份恢复元数据到 LAS Catalog,恢复默认采用“存在则跳过”的幂等策略,适合重复执行与失败重试。 | 同 Region / 跨 Region 元数据恢复、灾备演练 |
las_to_hive
| 从 LAS Catalog 直接导入到 Hive Metastore | Catalog 元数据从 LAS 向 Hive 同步或迁移 |
tos_to_hive
| 从 TOS 备份恢复元数据到 Hive Metastore | 先备份、后恢复到 Hive 的场景 |
使用 lf-exporter 工具时,在完成必要的准备工作后,各场景的通用操作流程为:配置 YAML 配置文件 > 运行 EMR Serverless 作业调用工具 > 确认结果。
以下为您介绍 lf-exporter 工具在不同场景下的详细使用指导。
准备工作
依赖的产品 | 准备工作 | 操作指导 |
|---|
EMR Serverless 队列 | LAS Catalog 元数据备份与恢复工具 lf-exporter 以 火山引擎 EMR Serverless Spark 作业运行,因此,您需要先开通 EMR Serverless 队列资源。 | |
TOS | 使用 lf-exporter 工具时,需将工具包、EMR Serverless Spark 作业配置文件上传至 TOS 便于作业运行时读取;通常也需要将元数据导出至 TOS 备份,因此您需要开通 TOS 并结合数据备份与恢复的需要,创建对应的 TOS Bucket。 | |
IAM | 使用 lf-exporter 工具时,会使用火山引擎账号的 AK、SK信息进行认证鉴权,因此您需要先获取用户的AK、SK信息。 - 备份与恢复默认遵循“按当前身份权限执行”的原则:能读到的对象会被备份,恢复时也只会对当前身份有权限检查或创建的对象生效。
- 跨 Region 灾备常见需要同时具备:LAS Catalog 访问权限与 TOS 访问权限。建议优先使用具备最小权限的子账号,并通过 STS 或固定 AK/SK 在 Serverless Spark 侧完成鉴权。
| |
lf-exporter 工具使用
step 1:获取lf-exporter 工具
您需要先获取lf-exporter 工具并上传到 TOS,便于后续运行 EMR Serverless Spark 作业时选用。
wget https://lasformation-cn-beijing.tos-cn-beijing.volces.com/las-exporter/application.jar
step 2:准备 YAML 配置文件
基于使用场景,准备好 YAML 配置文件,下面为您示例各场景下的 YAML 配置文件示例。
- 实际使用时请根据实际情况替换
${AK}、 ${SK} 、TOS 路径等相关参数。 - 全量的配置参数列表及参数说明请参见下文的:参考:配置参数列表。
以下为将 LAS Catalog 元数据导出备份到TOS场景下,YAML 配置文件的示例:las_to_tos.yaml。
mode: las_to_tos
lasClientInfo:
akMode: MANUAL
accessKeyId: "${AK}"
accessKeySecret: "${SK}"
endPoint: thrift://lakeformation.las.cn-beijing.ivolces.com:48869
regionId: cn-beijing
runOptions:
includeCatalogPrefixs: []
includeDatabasePrefixs: []
includeTablePrefixs: []
objectTypes: [catalog, database, table, partition, function]
permissionDeniedStrategy: skip
outputBaseDir: tos://backup-bucket/las_exporter/
auditOutputDir: tos://backup-bucket/las_exporter_audit/
以下为将 TOS 中备份的元数据恢复至 LAS Catalog 场景下,YAML 配置文件的示例:tos_to_las.yaml。
mode: tos_to_las
lasClientInfo:
akMode: MANUAL
accessKeyId: "${AK}"
accessKeySecret: "${SK}"
endPoint: thrift://lakeformation.las.cn-beijing.ivolces.com:48869
regionId: cn-beijing
runOptions:
includeCatalogPrefixs: []
includeDatabasePrefixs: []
includeTablePrefixs: []
batchSize: 1000
sparkTaskBatchSize: 200000
objectTypes: [catalog, database, table, partition, function]
permissionDeniedStrategy: skip
inputBaseDir: tos://backup-bucket/las_exporter/2026-04-13/
auditOutputDir: tos://backup-bucket/las_exporter_audit/
locationMappings:
- source: tos://old-bucket/
target: tos://new-bucket/
locationMappings 在恢复阶段会对以下字段做前缀替换:Catalog.locationUri、Database.locationUri、Table.sd.location、Partition.sd.location、Function.resourceUris[].uri。
说明
跨 Region 灾备推荐顺序是先完成数据文件复制并校验一致性,再执行元数据恢复并启用 locationMappings 指向灾备前缀,避免出现“元数据已指向灾备前缀但数据未就绪”的不可用窗口。
当目标是 Hive Metastore 时,可使用 las_to_hive(直导)或 tos_to_hive(从备份恢复)。这两种模式需要额外提供 hmsClientInfo(例如 hiveConfPath、metastoreUris,以及 catalog 写入可能用到的 JDBC 连接信息)。
mode: las_to_hive
lasClientInfo:
akMode: AUTO
endPoint: thrift://lakeformation.las.cn-beijing.ivolces.com:48869
regionId: cn-beijing
hmsClientInfo:
hiveConfPath: /etc/emr/hive/conf/hive-site.xml
runOptions:
includeCatalogPrefixs: [las_exporter]
includeDatabasePrefixs: [las_exporter]
includeTablePrefixs: [exporter_table_1000]
batchSize: 1000
objectTypes:
- catalog
- database
- table
- partition
- function
当目标是 Hive Metastore 时,可使用 las_to_hive(直导)或 tos_to_hive(从备份恢复)。这两种模式需要额外提供 hmsClientInfo(例如 hiveConfPath、metastoreUris,以及 catalog 写入可能用到的 JDBC 连接信息)。
mode: tos_to_hive
lasClientInfo:
akMode: AUTO
endPoint: thrift://lakeformation.las.cn-beijing.ivolces.com:48869
regionId: cn-beijing
hmsClientInfo:
hiveConfPath: /etc/emr/hive/conf/hive-site.xml
runOptions:
includeCatalogPrefixs: [las_exporter]
includeDatabasePrefixs: [las_exporter]
objectTypes:
- catalog
- database
- table
- partition
- function
outputBaseDir: xxx
inputBaseDir: tos://exporter_las/2025-02-19
step 3:将工具包、配置文件上传至 TOS
将工具包、配置文件上传至 TOS Bucket,便于后续提交运行 EMR Serverless Spark 作业时引用。上传文件至 TOS Bucket 的操作详情请参见:上传文件。
step 4:提交 Serverless Spark 作业
登录并进入 EMR 控制台,在作业管理页面提交一个 Spark JAR 作业,详细作业提交操作指导请参见 EMR 官网文档:提交 Spark JAR 作业。

在作业内容中,配置调用 lf-exporter 工具相关的作业内容。下面是一个 SparkJar JSON 任务参数模板,您可参考模版根据实际情况修改其中的参数即可。
{
"JobType": "SparkJar",
"VolcanoQueue": null,
"StorageMounts": [],
"MainClass": "bytedance.olap.las.Exporter",
"MainApplicationFile": "tos://las_exporter/application.jar",
"Jars": [],
"Files": [
"tos://las_exporter/tos_to_las.yaml"
],
"PyFiles": null,
"Archives": [],
"SparkConf": "spark.sql.adaptive.enabled=false,spark.driver.cores=1,spark.driver.memory=4G,spark.executor.cores=2,spark.executor.memory=4G,spark.executor.instances=2,spark.sql.shuffle.partitions=200,serverless.spark.access.key=AKLTN******,serverless.spark.secret.key=TnpBe******",
"MainArguments": "tos://las_exporter/tos_to_las.yaml"
}
其中:
- MainApplicationFile:配置为
lf-exporter 工具 JAR包上传至 TOS Bucket 后的 TOS 路径地址。 - Files:配置为对应任务的 YAML 配置文件上传至 TOS Bucket 后的 TOS 路径地址。
- MainArguments:配置为对应任务的 YAML 配置文件上传至 TOS Bucket 后的 TOS 路径地址。
- SparkConf:
- serverless.spark.access.key、serverless.spark.secret.key:配置为准备工作中已获取的具有访问 TOS、Catalog 权限的AK、SK。
step 5:确认备份/恢复结果
- 备份成功后:
- 在
outputBaseDir 下可以看到按日期分区的备份目录,并包含各对象类型 JSON(例如 catalogs/、databases/、tables/、partitions/、functions/)。产物的组织方式详情请参见下文的参考:备份产物组织方式。 - 若配置了
auditOutputDir,还会输出审计 summary 便于确认“是否全量成功”。
- 恢复完成后:
- 可以在 LAS Catalog 控制台或通过引擎侧查询确认 catalog、db、table、partition、function 已可见。
- 恢复默认采用“存在则跳过”的幂等策略,适合重复执行与失败重试。
应用实践:LAS Catalog 异地冷备
灾备方案建议
- 基于
lf-exporter 工具进行灾备方案规划时,由于 lf-exporter 工具当前不复制数据文件,跨 Region 灾备要实现数据可用,需要额外的数据文件复制链路,常见实现方式包括对象存储 TOS 跨 Region 复制、或在可控计算环境中使用目录级复制工具。

- 数据文件灾备的关键输入来自元数据备份中
Table.sd.location、Partition.sd.location 与 Function.resourceUris[].uri。建议先从备份 JSON 抽取这些 location 前缀,结合 locationMappings 计算目标前缀,再对目标前缀做一致性校验,并将校验结果作为元数据恢复的前置门禁。
注意
Iceberg 场景需要额外注意:locationMappings 只会改 metastore 中的 location,不会改 Iceberg metadata 或 manifest 文件中的内部绝对路径。如果 Iceberg 物理文件整体迁移,可能还需要额外做 Iceberg 层的数据迁移或路径重写。
容灾配置
异地冷备场景下,以使用 TOS 跨 Region 复制为例,为您示例配置流程。
- 参考
lf-exporter 工具的通用使用流程,基于 las_to_tos 任务场景的配置,将 LAS Catalog 元数据备份至同地域的 TOS Bucket。 - 使用 TOS 的跨区域复制功能,将备份至 TOS 的元数据跨区域复制到另外一个地域的 Bucket 中,例如,将华北地域 Bucket 内容复制到华东地域 Bucket。配置详情请参见:TOS 跨区分复制参考文档。
- 跨区域复制规则创建并完成同步后,您可以在异地 Bucket 中检查复制结果。
异常恢复
当主服务地域的元数据出现异常时,您可将备份至 TOS 的元数据恢复至 LAS,核心流程如下。
- 您可以在主服务地域中创建一个新的 TOS Bucket,用于恢复元数据存储。
- 您可使用 TOS 的跨 Region 复制功能,将异地 Bucket 的元数据复制回同地域的恢复 Bucket中。配置详情请参见:TOS 跨区分复制参考文档。
注意
备份至 TOS 的LAS Catalog 元数据为序列化后的 JSON ,并按日期分区目录进行存储,请参见下文的参考:备份产物组织方式。您在恢复时,需明确需要恢复的分期日期目录。
- 参考
lf-exporter 工具的通用使用流程,基于 tos_to_las 任务场景的配置,将 TOS Bucket 中的元数据恢复至同地域的 LAS Catalog。 - 作业运行完成后,前往 LAS 中查看恢复结果。
参考:备份产物组织方式
在 las_to_tos 模式下,元数据对象会序列化为 JSON,并按对象类型落在 runOptions.outputBaseDir 的日期分区目录中。恢复模式(tos_to_las / tos_to_hive)需要将 runOptions.inputBaseDir 指向某一次备份的日期目录。
说明
恢复时 inputBaseDir 需要精确到某个备份日期目录(例如 .../backup/2026-01-16/),而不是备份根目录。
参考:配置参数列表
下表罗列了备份配置中用到的参数说明。
配置块 | 参数 | 当前代码/默认值 | 适用模式 | 当前说明 |
|---|
顶层 | mode
| 必填;支持 las_to_tos、las_to_hive、tos_to_hive、tos_to_las | 全部 | 代码校验见 lf-exporter/src/main/java/bytedance/olap/las/ExporterConfig.java:95 |
lasClientInfo
| akMode
| MANUAL / AUTO
| 全部 | 代码字段保留两种;当前场景优先使用 MANUAL |
lasClientInfo
| accessKeyId
| MANUAL 时必填
| 全部 | 访问 LAS 元数据使用 |
lasClientInfo
| accessKeySecret
| MANUAL 时必填
| 全部 | 访问 LAS 元数据使用 |
lasClientInfo
| securityToken
| 可选 | 全部 | STS 场景可带上 |
lasClientInfo
| assumeRole
| 可选 | 全部 | 代码字段保留,按实际鉴权链路使用 |
lasClientInfo
| endPoint
| 必填 | 全部 | 当前文档统一使用 thrift://lakeformation.las.cn-beijing.ivolces.com:48869 这类地址 |
lasClientInfo
| regionId
| 必填 | 全部 | 需要和目标 Region 对齐 |
lasClientInfo
| env
| 空串或环境名 | 全部 | 线上通常留空;非线上环境按实际填写 |
hmsClientInfo
| hiveConfPath
| 常见默认 /etc/emr/hive/conf/hive-site.xml | las_to_hive、tos_to_hive
| 半托管 Hive 常用 |
hmsClientInfo
| kerberosInfo.principal / kerberosInfo.keytab
| 可选 | las_to_hive、tos_to_hive
| 仅 Kerberos 打开的 Hive 需要 |
hmsClientInfo
| metastoreUris
| 可选 | las_to_hive、tos_to_hive
| 直连 HMS 时使用 |
hmsClientInfo
| jdbcDriver / jdbcUri / jdbcUserName / jdbcPassword
| 可选 | las_to_hive、tos_to_hive
| Catalog 相关写入会用到 JDBC |
runOptions
| includeCatalogPrefixs
| 空表示不过滤 | 全部 | 前缀匹配 catalog |
runOptions
| includeDatabasePrefixs
| 空表示不过滤 | 全部 | 前缀匹配 database |
runOptions
| includeTablePrefixs
| 空表示不过滤 | 全部 | 前缀匹配 table |
runOptions
| includeFunctionPrefixs
| 空表示不过滤 | 全部 | 前缀匹配 function;历史表格里有,代码里也仍支持 |
runOptions
| objectTypes
| 必填 | 全部 | 支持 catalog、database、table、partition、function |
runOptions
| batchSize
| 默认 1000 | tos_to_hive、tos_to_las、大分区导入相关
| 主要控制分区批量写入 |
runOptions
| sparkTaskBatchSize
| 默认 200000 | tos_to_hive、tos_to_las
| 影响任务切分粒度 |
runOptions
| outputBaseDir
| las_to_tos 必填
| las_to_tos
| 导出目录;实际会自动追加日期分区 |
runOptions
| inputBaseDir
| tos_* 模式必填
| tos_to_hive、tos_to_las
| 指向某天备份根目录,例如 tos://bucket/las_exporter/2026-04-14/ |
runOptions
| locationMappings
| 可选 | tos_to_hive、tos_to_las
| 恢复时做 location 前缀替换;要求 source/target 以 / 结尾 |
runOptions
| permissionDeniedStrategy
| 默认 skip | 全部 | 支持 skip / fail |
runOptions
| auditOutputDir
| 可选 | 全部 | 配置后会把审计 summary 额外落到 TOS |