回答 在HMaster主备倒换或启动期间,HMaster为先前失败/停用的RegionServer执行WAL splitting及region恢复。 在后台运行有多个监控HMaster启动进程的线程: TableNamespaceManager 这是一个帮助类,用于在HMaster主备倒换或启动期间,管理namespace表及监控表region的分配。如果namespace表在规定时间(hbase.master.namespace.init.timeout,默认为3600000ms)内没有上线,那么它就会异常中断HMaster进程。 InitializationMonitor 这是一个主HMaster初始化线程监控类,用于监控主Master的初始化。如果在规定时间(hbase.master.initializationmonitor.timeout,默认为3600000ms)内初始化线程失败,该线程会异常终止HMaster(如果该hbase.master.initializationmonitor.haltontimeout被启动,默认为false)。 在HMaster主备倒换或启动期间,如果WAL hlog文件存在,它会初始化WAL splitting任务。如果WAL hlog splitting任务完成,它将初始化表region分配任务。 HMaster通过ZooKeeper协调log splitting任务和有效的RegionServer,并追踪任务的发展。如果主HMaster在log splitting任务期间退出,新的主HMaster会尝试重发没有完成的任务,RegionServer从头启动log splitting任务。 HMaster初始化工作完成情况会由于很多原因被延迟: 间歇性的网络故障。 磁盘瓶颈。 log split任务工作负荷较大,RegionServer运行缓慢。 RegionServer(region openning)响应缓慢。 在以上场景中,为使HMaster更早完成恢复任务,建议增加以下配置参数,否则Master将退出导致整个恢复进程被更大程度地延迟。 增加namespace表在线等待超时周期,保证Master有足够的时间协调RegionServer workers split任务,避免一次次重复相同的任务。 “hbase.master.namespace.init.timeout”(默认为3600000ms) 通过RegionServer worker增加并行split任务执行数,保证RegionServer worker能并行处理split work(RegionServer需要有更多的核心)。在“客户端安装路径/HBase/hbase/conf/hbase-site.xml”中添加参数: “hbase.regionserver.wal.max.splitters”(默认为2) 如果所有的恢复过程都需要时间,增加初始化监控线程超时时间。 “hbase.master.initializationmonitor.timeout”(默认为3600000ms)