前言

当用户无法启动 HMaster 服务,并且在分配 region 阶段不断崩溃。

现象

重新启动后,HMaster 服务无法启动,因为它无法在超时之前分配 hbase:namespace 表。这发生在包含大量区域的大型集群中。验证日志时观察到以下错误:

2022-03-28 21:50:41,173 FATAL org.apache.hadoop.hbase.master.HMaster: Failed to become active master
java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned

问题原因

出现此问题的原因是群集包含大量region(其中超过 10万个区域),但在配置的超时值之前,服务器的线程参数非常低。

解决方案

要解决此问题,请考虑群集的负载,请调整以下参数:

hbase.regionserver.executor.openregion.threads = 200
hbase.regionserver.executor.closeregion.threads = 200
hbase.master.namespace.init.timeout = 86400000
hbase.master.initializationmonitor.timeout = 86400000
hbase.master.executor.openregion.threads = 300
hbase.master.executor.closeregion.threads = 200
hbase.master.procedure.threads = 261

调整这些参数后,由于线程数增加,region 分配阶段的完成速度要快得多。并且 HBase:namespace 表是在配置的超时值之前分配的。这有助于HMaster服务的成功启动。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐