Bootstrap

HBase启动后查询报错:ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

一、介绍

报错信息:

hbase(main):001:0> list_namespace
NAMESPACE                                                                                               
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
	at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2938)
	at org.apache.hadoop.hbase.master.HMaster.listNamespaces(HMaster.java:3264)
	at org.apache.hadoop.hbase.master.MasterRpcServices.listNamespaces(MasterRpcServices.java:1027)
	at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:393)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
	

二、解决办法

  • 查询百度
    https://blog.csdn.net/weixin_43648549/article/details/123615758 (内容大概需要进行HBase初始化)
    • 删除zookeeper中的所有的/hbase目录
    # 进入zk客户端
    zkCli.sh
    # 删除hbase目录
    rmr /hbase
    # 查看zookeeper内部目录
    ls /
    
    • 删除HDFS中的/hbase目录(具体目录看hbase-site.xml文件)
    # 删除hdfs中的hbase目录
    hdfs dfs -rm -r /hbase
    
    • 然后重新启动
  • 但是解决这个问题的时候没有看见最后一个问题就去解决了,导致具体解决需要你来,此处给的方法之一就是重新进行初始化按照上面给的步骤。删除HDFS上的hbase目录,删除Zookeeper上的hbase目录。重新启动。
  • 在此之前刚好弄了个ChatGPT也进行了查询
    • 问题:hbase:ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
      ChatGPT:
    org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 是 HBase 中的一个错误信息。它表示 HBase 的 Master 正在初始化中,不能处理当前的请求。
    
    在 HBase 启动过程中,Master 需要加载和初始化各种元数据信息,例如表的 schema、region 的位置信息等。在这个过程中,如果有客户端向 HBase 发送了查询请求,就会收到 PleaseHoldException 错误信息,提示 Master 正在初始化中。
    
    这通常是因为 HBase 正在进行大量的元数据加载和初始化操作,而客户端的请求无法得到及时处理。解决这个问题的方法是等待一段时间后再次发送请求,或者等待 Master 初始化完成后再启动客户端应用程序。
    
    需要注意的是,如果 Master 初始化过程中发生了异常,就可能导致 Master 无法启动。这时需要检查 HBase 的日志文件,查看具体的错误信息,并采取相应的措施解决问题。
    
    
    • 在系统中查看hbase日志文件:
    master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1678268892251, server=xsqone144,16020,1678267088023}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
    ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
    snapshot.SnapshotManager: Couldn't delete working snapshot directory: hdfs://192.168.136.144:9000/hbase/.hbase-snapshot/.tmp
    
    
    • 问题:Hbase日志中报错信息为ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
      ChatGPT:
    ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined. 是 HBase 日志中的一条错误信息,表示 HBase Master 启动时遇到了问题,无法继续处理请求,进入等待状态。
    
    在 HBase 启动过程中,Master 负责加载和管理 RegionServer,并且需要对集群中出现的异常事件做出响应。如果启用了 ServerCrashProcedures,Master 可以检测到 RegionServer 的异常退出,并采取相应的措施,例如重新分配 Region、重新平衡集群等。如果未启用 ServerCrashProcedures,Master 将无法处理这些异常事件,导致集群无法正常工作。
    
    在出现 ServerCrashProcedures=false 错误时,通常是由于某个 RegionServer 异常退出,但是 Master 没有收到通知,导致无法继续处理请求。为了解决这个问题,可以尝试以下方法:
    
    启用 ServerCrashProcedures:在 hbase-site.xml 配置文件中设置 hbase.master.enabletableprocedure=true 和 hbase.master.procedure.queue.enabled=true,可以启用 ServerCrashProcedures 功能,让 Master 能够对异常事件做出响应。
    
    手动触发 RegionServer 重新分配:使用 hbase hbck -fix 命令手动触发 RegionServer 的重新分配,以解决集群无法正常工作的问题。
    
    检查 HBase 日志文件:查看 HBase 的日志文件,分析具体的错误信息,尝试解决问题。
    
    需要注意的是,出现 ServerCrashProcedures=false 错误时,可能会影响集群的稳定性和可用性,应及时采取措施解决问题。
    
    
    • 问题(但此时我的两个服务都已启动成功):master.HMaster: hbase:meta,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1678268892251, server=xsqone144,16020,1678267088023}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
      ChatGPT:
    	根据给出的日志,HBase的master进程在启动过程中发现hbase:meta这个Region Server处于不在线的状态。这个Region Server的具体信息为:server=xsqone144,16020,1678267088023。
    
    这个问题可能由以下原因引起:
    
    Region Server进程未正确启动或已经停止:可以检查Region Server进程的日志,查看是否存在任何错误或异常信息。
    
    网络故障:检查Region Server所在机器与HBase集群的网络连接是否正常。
    
    配置错误:检查HBase配置文件中与该Region Server有关的配置是否正确。
    
    针对这个问题,可以采取以下解决步骤:
    
    检查Region Server进程是否正常运行。如果该进程已停止,需要重新启动该进程。
    
    检查网络连接是否正常。可以通过ping命令测试Region Server所在机器与HBase集群之间的连接。
    
    检查HBase配置文件中与该Region Server有关的配置是否正确。特别是检查hbase.regionserver.hostname配置是否与该Region Server所在机器的主机名一致。
    
    如果以上步骤均未解决问题,可以尝试重启整个HBase集群或联系相关人员进行进一步的排查。
    
    • 问题:snapshot.SnapshotManager: Couldn’t delete working snapshot directory: hdfs://192.168.136.144:9000/hbase/.hbase-snapshot/.tmp
      ChatGPT:
    根据给出的日志,HBase的SnapshotManager在执行快照操作时无法删除工作目录,工作目录的路径为:hdfs://192.168.136.144:9000/hbase/.hbase-snapshot/.tmp。
    
    这个问题可能由以下原因引起:
    
    HBase没有足够的权限来删除该目录:可以检查HBase所使用的账号是否具有删除该目录的权限。
    
    目录正在被其他进程占用:可能有其他HBase进程或其他进程正在使用该目录。可以通过lsof命令查看该目录是否被其他进程占用。
    
    针对这个问题,可以采取以下解决步骤:
    
    确认HBase所使用的账号是否具有删除该目录的权限。如果权限不足,需要修改权限或使用具有足够权限的账号来执行该操作。
    
    确认目录是否被其他进程占用。如果是,需要先停止占用该目录的进程,然后再执行删除操作。
    
    如果以上步骤无法解决问题,可以尝试手动删除该目录。在手动删除之前,需要确保该目录没有被其他进程占用,并且要注意备份该目录以防止数据丢失。
    
    在解决该问题之后,建议对HBase的工作目录和快照目录进行定期清理,以避免类似的问题发生。
    
  • 请注意一定查看(***/hbase*/logs/*****.log)文件,此文件有具体的错误信息。请按照具体的错误信息进行处理。
;