开启 hbase 时,slave 上的 HRegionServer 没有启动

本文详细介绍了在HBase集群中遇到RegionServer与Master启动失败的问题,通过分析日志信息发现是由于时间设置不一致导致。提供了解决方案包括手动同步时间及检查网络端口冲突,并最终成功启动服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

1.问题描述

我在开启 hbase 时发现 slave 上的 HRegionserver 没有启动,后来查看 log 日志发现如下问题:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

由上述图片中的信息初步判断是由于 date 时间设置没有与主机同步

2.解决方法

第一种:使用 date -s “2014-1-4 12:16:00” 在 root 权限下键入时间,使其与 主机同步
第二种:http://blog.csdn.net/u011414200/article/details/50408272

3.ps

starting master, logging to /usr/hadoop/hbase/logs/hbase-hadoop-master-Master.Hadoop.out
192.168.1.4: starting regionserver, logging to /usr/hadoop/hbase/logs/hbase-hadoop-regionserver-Slave2.Hadoop.out
192.168.1.5: regionserver running as process 7155. Stop it first.
192.168.1.3: starting regionserver, logging to /usr/hadoop/hbase/logs/hbase-hadoop-regionserver-Slave1.Hadoop.out
192.168.1.4: Exception in thread "main" java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer
192.168.1.4:    at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:3977)
192.168.1.4:    at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:60)
192.168.1.4:    at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:75)
192.168.1.4:    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
192.168.1.4:    at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
192.168.1.4:    at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:4001)
192.168.1.4: Caused by: java.lang.reflect.InvocationTargetException
192.168.1.4:    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
192.168.1.4:    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
192.168.1.3: Exception in thread "main" java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer
192.168.1.3:    at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:3977)
192.168.1.3:    at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:60)
192.168.1.3:    at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:75)
192.168.1.3:    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
192.168.1.3:    at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
192.168.1.3:    at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:4001)
192.168.1.3: Caused by: java.lang.reflect.InvocationTargetException
192.168.1.3:    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
192.168.1.3:    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
[hadoop@Master bin]$ netstat -apn | grep 60020
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)

日志报错如下

DEBUG org.apache.hadoop.hbase.master.HMaster: Set serverside HConnection retries=100
2013-05-14 17:36:17,689 ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Failed to start master
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
        at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2030)
        at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:152)
        at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:104)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
        at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2044)
Caused by: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:344)
        at sun.nio.ch.Net.bind(Net.java:336)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.apache.hadoop.hbase.ipc.HBaseServer.bind(HBaseServer.java:256)
        at org.apache.hadoop.hbase.ipc.HBaseServer$Listener.<init>(HBaseServer.java:482)
        at org.apache.hadoop.hbase.ipc.HBaseServer.<init>(HBaseServer.java:1559)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.<init>(WritableRpcEngine.java:252)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getServer(WritableRpcEngine.java:201)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getServer(WritableRpcEngine.java:55)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.getServer(HBaseRPC.java:330)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.getServer(HBaseRPC.java:319)
        at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:302)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2025)

解决方法是:

[hadoop@Master logs]$ netstat -apn | grep 60000
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 ::ffff:192.168.1.2:60000    :::*                        LISTEN      17681/java          
[hadoop@Master logs]$ kill 17681
### HBase 启动缺少 `hquorumpeer` 和 `hregionserver` 的解决方案 #### 1. 检查 ZooKeeper 配置 确保 ZooKeeper 正常工作并正确配置。ZooKeeper 是 HBase 分布式协调服务的重要组成部分,任何错误都可能导致 `hquorumpeer` 不启动。 - 查看 ZooKeeper 是否正常运行: ```bash jps ``` - 如果 ZooKeeper 没有启动,则需要检查 ZooKeeper 日志文件中的错误信息,并修复相应问题[^1]。 #### 2. 修改 HBase 配置文件 编辑 `$HBASE_HOME/conf/hbase-site.xml` 文件,确认以下参数已正确定义: ```xml <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:8020/hbase</value> </property> ``` 这些设置指定了 ZooKeeper 节点地址和 HBase 数据存储位置。如果使用的是分布式环境,请替换为实际 IP 地址或主机名。 #### 3. 环境变量验证 确保所有必要的环境变量均已正确设置,特别是 JAVA_HOME 和 HADOOP_HOME 变量。可以在 `.bashrc` 或者其他 shell 初始化脚本中添加如下内容: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin ``` 重启终端使更改生效。 #### 4. RegionServer 启动失败排查 对于 `hregionserver` 缺失的情况,通常是因为 RegionServers 未能成功注册到 Master 上。可以尝试手动启动单个 RegionServer 来诊断具体原因: ```bash $HBASE_HOME/bin/hbase-daemon.sh start regionserver ``` 查看日志 `/logs/hostname-regionserver.log` 中是否有异常堆栈跟踪或其他提示性消息。 #### 5. 清理旧数据重试 有残留的数据可能会干扰新实例的初始化过程。考虑清理之前的安装目录后再重新部署整个集群: ```bash rm -rf /path/to/data/* ``` 注意备份重要资料前执行此操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值