hudi0.13版本clean策略
在 Apache Hudi 0.13 版本中,清理策略对于数据管理和存储优化起着关键作用。为了确保数据湖的有效利用和性能优化,了解和正确配置清理策略至关重要。以下是 Hudi 0.13 版本的清理策略详细说明及注意事项。
清理策略概述
Hudi 提供了两种主要的清理策略:
- KEEP_LATEST_COMMITS:保留最近的几次提交。
- KEEP_LATEST_FILE_VERSIONS:保留每个文件的最近几个版本。
配置参数
以下是常见的配置参数:
hoodie.cleaner.policy
:指定清理策略,可以是KEEP_LATEST_COMMITS
或KEEP_LATEST_FILE_VERSIONS
。hoodie.cleaner.commits.retained
:对于KEEP_LATEST_COMMITS
策略,指定要保留的最近提交次数。hoodie.cleaner.fileversions.retained
:对于KEEP_LATEST_FILE_VERSIONS
策略,指定要保留的每个文件的版本数量。
详细说明
KEEP_LATEST_COMMITS
该策略保留最近的 N 次提交生成的文件,删除更早的文件版本。
配置示例:
java
conf.setString("hoodie.cleaner.policy", "KEEP_LATEST_COMMITS");
conf.setInteger("hoodie.cleaner.commits.retained", 5); // 保留最近 5 次提交
注意点:
- 适用于频繁提交和更新的数据表,确保保留最近的数据变更记录,同时删除旧版本以释放存储空间。
- 需要平衡保留的提交次数和存储空间的利用率。如果设置过小,可能会导致数据恢复困难;设置过大,可能会占用过多存储空间。
KEEP_LATEST_FILE_VERSIONS
该策略保留每个数据文件的最近 N 个版本,删除更早的文件版本。
配置示例:
java
conf.setString("hoodie.cleaner.policy", "KEEP_LATEST_FILE_VERSIONS");
conf.setInteger("hoodie.cleaner.fileversions.retained", 3); // 保留每个文件的最近 3 个版本
注意点:
- 适用于需要保留每个文件的多个版本的情况,如需要回溯或审计历史数据。
- 确保设置合理的文件版本保留数量,以防止存储空间不足或数据恢复困难。
清理策略的执行
清理操作由 Hudi 的 HoodieCleaner
进行管理,可以通过手动触发或自动定期执行。清理策略通常在提交操作之后自动执行,但也可以通过手动调用清理操作来管理数据文件。
配置示例
以下是一个完整的配置示例,展示如何在 Flink 或 Spark 应用中配置 Hudi 的清理策略:
Flink 配置示例:
java
import org.apache.flink.configuration.Configuration;
Configuration conf = new Configuration();
conf.setString("hoodie.cleaner.policy", "KEEP_LATEST_COMMITS");
conf.setInteger("hoodie.cleaner.commits.retained", 5);
Spark 配置示例:
scala
import org.apache.hudi.config.HoodieWriteConfig;
val hudiOptions = Map(
HoodieWriteConfig.CLEANER_POLICY_PROP -> "KEEP_LATEST_COMMITS",
HoodieWriteConfig.CLEANER_COMMITS_RETAINED_PROP -> "5"
)
注意事项
- 资源管理:清理操作会消耗计算资源和I/O资源,建议在系统负载较低时进行清理操作,以避免影响系统性能。
- 监控和日志:定期监控清理操作的日志和指标,确保清理策略按预期执行,并及时调整配置。
- 备份和恢复:在调整清理策略前,确保有数据备份方案,以防误删除重要数据导致数据丢失。
- 测试和验证:在生产环境中应用新的清理策略前,建议在测试环境中进行充分测试,验证策略的有效性和影响。
通过合理配置和管理清理策略,可以确保 Hudi 表的高效运行和存储空间的优化。