文档首页/ MapReduce服务 MRS/ 故障排除/ 使用HBase/ 在HBase连续对同一个表名做删除创建操作时出现创建表异常
更新时间:2026-01-05 GMT+08:00
分享

在HBase连续对同一个表名做删除创建操作时出现创建表异常

问题现象

在HBase连续对同一个表名做删除创建操作时,可能出现创建表异常。

原因分析

执行过程:Disable Table > Drop Table > Create Table > Disable Table > Drop Table >...

  1. 在Disable表时,HMaster会发送RPC请求到RegionServer,RegionServer会将相关Region下线。当RegionServer上的Region关闭所需的时间超过HBase的HMaster等待Region处于RIT状态的超时时间,HMaster会默认该Region下线,实际上该Region可能还处在flush MemStore阶段。
  2. 发送RPC请求关闭Region之后,HMaster会判断该表的所有Region是否下线,1的情况下关闭超时也会认为是下线,然后HMaster返回关闭成功。
  3. 关闭成功之后,删除表,HBase表对应的数据目录被删掉。
  4. 在删除表之后,该数据目录会被还处于flush MemStore阶段的Region重新创建。
  5. 在创建该表时,将temp目录复制到HBase数据目录时,由于HBase数据目录不为空,导致调用HDFS rename接口时,数据目录变为temp目录最后一层追加到HBase的数据目录下,如$rootDir/data/$nameSpace/$tableName/$tableName,那样创建表就会失败。

处理步骤

出现该问题时,请检查该表对应的HBase数据目录是否存在,如果存在请将该目录重命名。

HBase数据目录由“$rootDir/data/$nameSpace/$tableName”组成,例如“hdfs://hacluster/hbase/data/default/TestTable”,其中:

  • $rootDir:表示HBase的根目录,该值通过在“hbase-site.xml”中查看配置“hbase.rootdir.perms”获取。
  • data:HBase的固定目录。
  • $nameSpace:表示NameSpace名称。
  • $tableName:表示HBase表名。

相关文档