修改HBase全局二级索引状态
索引状态介绍
索引状态反映了索引当前的使用情况,全局二级索引支持以下五种状态:
- ACTIVE:索引正常,可以正常读写。
- UNUSABLE:索引被禁用,索引数据会正常写入,查询时无法使用这个索引。
- INACTIVE:索引异常,索引数据与数据表不一致,跳过生成该索引的索引数据,查询数据时无法使用该索引。
- BUILDING:索引数据正常批量生成,索引数据生成工具执行结束会自动转换到ACTIVE状态,此状态下可以正常读写。
- DROPPING:索引正在被删除,跳过生成该索引的索引数据,查询数据时无法使用该索引。
基于工具的索引状态修改,支持图1所示的状态转换。
场景介绍
用户可以使用全局二级索引工具禁用/启用某个索引。
修改HBase全局二级索引状态
在HBase客户端执行以下命令可禁用/启用某个索引:
hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -D[idx_state_opt]='idx1'
相关参数介绍如下:
- tablename.to.index:表示需修改索引状态的数据表的名称。
- idx_state_opt:表示修改索引的目标状态,可选参数如下:
- indexnames.to.inactive:表示将指定的索引转换为INACTIVE状态。
- indexnames.to.active:表示将指定的索引转换为ACTIVE状态。
- indexnames.to.unusable:表示将指定的索引转换为UNUSABLE状态。
例如:修改状态为ACTIVE的table表的索引idx1的状态为UNUSABLE:
hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.unusable='idx1'
执行成功后,再次查看索引信息:
hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.show='table'
如图2所示,idx1的索引状态已被修改: