关闭Kudutable软删除特性
操作场景
本章节介绍如何关闭Kudu的soft delete特性,即通过DELETE操作删除表后立即删除数据,而不是在后台存留一段时间后再彻底删除。
Kudu默认开启soft delete特性。当通过DELETE操作删除表时,数据并不会立即从Kudu中彻底删除,这些数据会在后台存留一段时间(默认为6小时),之后才会被彻底删除。通过这一特性,可以在误操作的情况下恢复表和数据,从而提供了一定程度的数据保护。
如下图所示,test表处于Soft_deleted状态。

kudu table recall <kudumaster_addresses> <table_id>
如果在Impala中创建/删除Kudu表,则在软删除特性开启的状态下,通过Impala删除Kudu后无法立即重建同名的表,出现如下提示:
ERROR: ImpalaRuntimeException: Error creating Kudu table 'impala::xx.xx' CAUSED BY: ImpalaRuntimeException: Table 'impala::xx.xx' already exists in Kudu.
这表示Kudu表还处于软删除保留期内,并未完全删除。此时可以有如下选择:
- 创建其他名称的表。
- 在保留期之后再创建同名表(默认6小时)。
- 参考本章节操作关闭软删除特性,快速恢复。
前提条件
本章节仅适用于MRS 3.6.0-LTS及之后版本。
关闭软删除
如果您需要立即删除表及其数据,可通过以下方式处理:
方式一:Kudu全局生效
- 登录FusionInsight Manager系统。
详细操作请参考访问集群Manager。
- 选择“集群 > 服务 > Kudu > 配置”,单击“全部配置”,搜索参数“default_deleted_table_reserve_seconds”,值修改“0”。
- 修改参数配置后,单击“保存”,根据界面提示操作后,等待配置保存成功。
- 在Kudu服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。
组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。
方式二:Impala全局生效
- 登录FusionInsight Manager系统。
详细操作请参考访问集群Manager。
- 选择“集群 > 服务 > Impala > 配置”,单击“全部配置”,搜索参数“default_query_options”,在值中新增“,KUDU_TABLE_RESERVE_SECONDS=0”。
- 修改参数配置后,单击“保存”,根据界面提示操作后,等待配置保存成功。
- 在Impala实例页面,勾选所有状态为配置过期的Impalad实例,验证管理员密码后,重启实例。
组件实例重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。
方式二:单表生效
- 以kudu命令行为例,指定-reserve_seconds=0即可立即删除表。
kudu table delete <kudumaster_addresses> <table_name> -reserve_seconds=0
- 以Kudu Java SDK为例,在KuduClient.deleteTable()接口中指定删除时间为0立即删除表。
KuduClient.deleteTable(<tableName>, <reserveSeconds>);
- 如果需要删除从impala创建的kudu表,比如通过Impala-shell删表,则可以配置如下query option立即删除表:
set KUDU_TABLE_RESERVE_SECONDS=0; drop table <impala_table_name>;