文档首页> MapReduce服务 MRS> 组件操作指南(普通版)> 使用HBase> HBase常见问题> 为什么在使用OfflineMetaRepair工具重新构建元数据后,HMaster启动的时候会等待namespace表分配超时,最后启动失败
更新时间:2022-09-30 GMT+08:00

为什么在使用OfflineMetaRepair工具重新构建元数据后,HMaster启动的时候会等待namespace表分配超时,最后启动失败

问题

为什么在使用OfflineMetaRepair工具重新构建元数据后,HMaster启动的时候会等待namespace表分配超时,最后启动失败?

且HMaster将输出下列FATAL消息表示中止:

2017-06-15 15:11:07,582 FATAL [Hostname:16000.activeMasterManager] master.HMaster: Unhandled exception. Starting shutdown.
java.io.IOException: Timedout 120000ms waiting for namespace table to be assigned
        at org.apache.hadoop.hbase.master.TableNamespaceManager.start(TableNamespaceManager.java:98)
        at org.apache.hadoop.hbase.master.HMaster.initNamespace(HMaster.java:1054)
        at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:848)
        at org.apache.hadoop.hbase.master.HMaster.access$600(HMaster.java:199)
        at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:1871)
        at java.lang.Thread.run(Thread.java:745)

回答

当通过OfflineMetaRepair工具重建元数据时,HMaster在启动期间等待所有region server的WAL分割,以避免数据不一致问题。一旦WAL分割完成,HMaster将进行用户region的分配。所以当在集群异常的场景下,WAL分割可能需要很长时间,这取决于多个因素,例如太多的WALs,较慢的I/O,region servers不稳定等。

为确保HMaster能够成功完成所有region server WAL分割,请执行以下步骤:

  1. 确保集群稳定,不存在其他问题。如有任何问题,请先修复。
  2. “hbase.master.initializationmonitor.timeout”参数配置一个较大的值,默认值为“3600000”毫秒。
  3. 重启HBase服务。