hbase启动错误

 

对于hbase节点可以正常启动,但是无法查看webui界面,并且一段时间后Hmaster挂了

我们查看hbase的日志文件,例如( /opt/en/hbase/logs/hbase-root-master-hadoop1.out

 2024-05-04 01:18:49,466 INFO [Thread-13] regionserver.HRegionServer: ***** STOPPING region server 'hadoop1,16000,1714756720219' ***** 2024-05-04 01:18:49,466 INFO [Thread-13] regionserver.HRegionServer: STOPPED: Stopped by Thread-13 2024-05-04 01:18:51,901 INFO [master/hadoop1:16000] ipc.NettyRpcServer: Stopping server on /192.168.88.111:16000 2024-05-04 01:18:51,904 INFO [master/hadoop1:16000] regionserver.HRegionServer: Stopping infoServer 2024-05-04 01:18:51,922 INFO [master/hadoop1:16000] handler.ContextHandler: Stopped o.e.j.w.WebAppContext@2954b5ea{/,null,UNAVAILABLE}{file:/opt/en/hbase-2.1.0/hbase-webapps/master} 2024-05-04 01:18:51,930 INFO [master/hadoop1:16000] server.AbstractConnector: Stopped ServerConnector@4339e0de{HTTP/1.1,[http/1.1]}{0.0.0.0:16010} 2024-05-04 01:18:51,931 INFO [master/hadoop1:16000] handler.ContextHandler: Stopped o.e.j.s.ServletContextHandler@8b91134{/static,file:///opt/en/hbase-2.1.0/hbase-webapps/static/,UNAVAILABLE} 2024-05-04 01:18:51,932 INFO [master/hadoop1:16000] handler.ContextHandler: Stopped o.e.j.s.ServletContextHandler@c6da8bb{/logs,file:///opt/en/hbase-2.1.0/logs/,UNAVAILABLE} 2024-05-04 01:18:51,934 INFO [master/hadoop1:16000] regionserver.HRegionServer: stopping server hadoop1,16000,1714756720219 2024-05-04 01:18:51,937 INFO [master/hadoop1:16000] regionserver.HRegionServer: stopping server hadoop1,16000,1714756720219; all regions closed. 2024-05-04 01:18:51,937 INFO [master/hadoop1:16000] hbase.ChoreService: Chore service for: master/hadoop1:16000 had [] on shutdown 2024-05-04 01:18:51,952 WARN [master/hadoop1:16000] master.ActiveMasterManager: Failed get of master address: java.io.IOException: Can't get master address from ZooKeeper; znode data == null 2024-05-04 01:18:51,970 INFO [master/hadoop1:16000] zookeeper.ZooKeeper: Session: 0x30000044bb00001 closed 2024-05-04 01:18:51,972 INFO [master/hadoop1:16000] regionserver.HRegionServer: Exiting; stopping=hadoop1,16000,1714756720219; zookeep

 从日志来看,HBase的RegionServer(在这里也被错误地标记为Master,尽管从日志内容来看它实际上是RegionServer)和(可能是)Master服务正在正常关闭。然而,关闭过程中出现了警告,指出从ZooKeeper获取Master地址时失败,并且znode数据为null。

 

这里有几个步骤来解决或诊断这个问题:

  1. 检查ZooKeeper集群
    • 确保ZooKeeper集群中的所有节点都正在运行,并且集群是健康的。
    • 使用ZooKeeper客户端(如zkCli.sh)连接到ZooKeeper,并检查HBase相关的znode是否存在且状态正常。
  2. 检查HBase配置
    • 验证hbase-site.xml中的ZooKeeper配置是否正确,包括hbase.zookeeper.quorumhbase.zookeeper.property.clientPort
    • 确保ZooKeeper集群的地址和端口与HBase配置中指定的相匹配。
  3. 检查网络问题
    • 确保HBase节点可以访问ZooKeeper集群,并且没有防火墙或网络配置阻止它们之间的通信。
  4. 检查HBase状态
    • 在尝试重新启动HBase之前,确保没有残留的HBase进程在运行。可以使用jpsps命令结合grep来查找和杀死任何残留的HBase进程。
  5. 重新启动HBase
    • 在确保ZooKeeper集群运行正常且HBase配置正确后,尝试重新启动HBase。
    • 使用HBase的启动脚本(如start-hbase.sh)来启动HBase服务。
  6. 查看日志文件
    • 在HBase和ZooKeeper的日志文件中查找任何与连接失败或znode数据为null相关的错误或异常。
    • 这些日志文件通常位于HBase和ZooKeeper的安装目录下的logs子目录中。
  7. 考虑版本兼容性
    • 确保您使用的HBase版本与ZooKeeper版本兼容。
    • 如果您最近升级了HBase或ZooKeeper,请查阅相关文档以确保正确配置和迁移。
  8. 查看HBase的znode
    • 使用ZooKeeper客户端检查HBase创建的znode是否存在且状态正常。
    • 如果znode丢失或状态异常,可能需要手动删除并重新启动HBase服务来重新创建它们。但是,请小心操作,因为这可能会影响到正在运行的工作负载和数据一致性。

但是,我检查一遍之后,我的配置文件并没有写错,这里呢我们往上翻一下日志文件得到:

2024-05-04 01:18:49,465 ERROR [Thread-13] master.HMaster: ***** ABORTING master hadoop1,16000,1714756720219: Unhandled exception. Starting shutdown. ***** org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x

 

这个错误日志显示 HBase 的 Master 进程(在机器 hadoop1 上,使用端口 16000,并且具有唯一的会话ID 1714756720219)由于一个未处理的异常而启动关闭流程。异常是一个 AccessControlException,指出用户 root 没有权限向 HDFS(Hadoop Distributed FileSystem)的根目录 / 写入数据。

在 Hadoop 和 HBase 的安全上下文中,HDFS 的文件和目录具有与 UNIX 系统类似的权限和所有权模型。在这个案例中,根目录 / 被拥有者 hadoop 和组 supergroup 所拥有,并且权限设置为 drwxr-xr-x,这意味着只有拥有者 hadoop 用户才有写入权限(w),而组 supergroup 和其他用户只有读取和执行权限(r-x)。

由于 root 用户尝试写入 HDFS 的根目录但没有足够的权限,因此 HBase Master 进程无法继续运行,并启动了关闭流程。

 

要解决这个问题,你可以考虑以下几个步骤:

  1. 修改HDFS权限
    如果你确定需要 root 用户能够写入 HDFS 的根目录(这通常不推荐,因为 root 用户权限过高,可能引发安全问题),你可以使用 Hadoop 的 hdfs dfs -chmod 命令来修改权限。但请注意,这通常不是一个好主意。

  2. 使用正确的用户运行HBase
    更常见的做法是确保 HBase 使用正确的用户(例如 hbase 或 hadoop)来运行其服务。确保 HBase 进程由具有适当 HDFS 权限的用户启动。

由于我之前创建了一个名为hadoop的用户,然后我只需要更改en文件夹下的文件权限就可以了:

chown -R hadoop:hadoop /opt/en

 将其用户与用户组修改为hadoop的用户与用户组,之后我们启动hbase,并打开WEBUI界面,我们可以看到正常打开了

总的来说我的错误就是权限问题! 

  • 32
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值