通过hbase shell disable表,显示表以及关闭,但是使用disabletable_name,却显示表状态为disableing,不能正常使用。 分析 1)通过以下命令查看表状态: hbase> is_disabled table_name false hbase> is_enabled table_name false 1. 2. 3. 4. 通过查看表的状态发现,当前表既没有开启也没有关闭。 2)查看当前表...
如果表处于禁用状态,但没有依赖关系和Region状态正常,可以使用以下命令来启用表: $ hbase shell hbase(main):001:0>enable'table_name' 1. 2. 如果表有其他表依赖于它,那么需要先禁用依赖表,再禁用被依赖的表。可以使用以下命令来禁用表: $ hbase shell hbase(main):001:0>disable'table_name' 1. 2. ...
通过hbase shell disable表,显示表以及关闭,但是使用drop table_name,却显示表状态为disableing,不能正常被删除。 1.2 分析 1)通过以下命令查看表状态: hbase> is_disabled table_namefalsehbase> is_enabled table_namefalse 通过查看表的状态发现,当前表既没有开启也没有关闭。 2)查看当前表对应的元数据 hbas...
异常点为选中的这一行日志,在disable该表时出现了由于存在1个region事务中很长时间都无法结束的情况,导致整个disable流程消耗了很长时间 收集对应节点regionserver进行分析,在HBase服务重启时有如下异常,表的索引表状态没有正常进入enabled状态,导致disable表时5分钟超时。
HBase 使用 drop 命令删除表,但是在删除表之前需要先使用 disable 命令禁用表。例如有一个 Student 表,删除该表的完整流程如下: 使用disable 禁用表以后,可以使用 is_disable 查看表是否禁用成功。另外,如果只是想清空表中的所有数据,使用 truncate 命令即可,此命令相当于完成禁用表、删除表,并按原结构重新建立表...
disable过程主要是通过DisableTableHandler来完成的,比如这里面的prepare过程就会检查要disable的不是hbase:meta表。而disable过程主要是通过handleDisableTable来完成的,在hbase.bulk.assignment.waiton.empty.rit(默认五分钟)内,必须通过HMaster的assignmentManager来负责将所有的region进行批量unassign操作,否则就超时了。当然...
方案一:高版本HBase支持在线设置表TTL,无需禁用表。建测试表验证,低峰期通过HBase Shell调整列族时效性。方案二:若方案一不可行,可使用API实时设置插入数据TTL,但需手动删除历史数据。知识点补充:设置TTL至最大值2147483647可重置为永久有效。欢迎提供更好答案,并在留言区讨论。转载请注明出处,...
其实在稍微高一点的HBase版本,设置表TTL属性已经可以在线进行,不需要disable表了。如果不确定,可以先建一个测试表在线设置一下TTL试一试。如果支持,那可以选择在低峰期通过HBase Shell手动修改列族的时效性,一劳永逸。 hbase(main):030:0> create'test','f1'0row(s)in1.2990seconds ...
addFamily(hColumnDescriptor); } //创建表操作 admin.createTable(hTableDescriptor); System.out.println("表创建成功!!"); } //删除表 public static void deleteTable(String tableName) throws IOException { //使用不可用(下线) admin.disableTable(TableName.valueOf(tableName)); //执行删除操作 admin....