Hbase学习5_开启 hbase 时,slave 上的 HRegionServer 没有启动

本文介绍了在启动HBase过程中遇到的问题,特别是HRegionserver无法启动的情况,并提供了两种解决方案,一种是通过同步时间来解决,另一种是通过排查并结束占用端口的进程。

1.问题描述

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

这里写图片描述

这里写图片描述

这里写图片描述

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

2.解决方法

第一种:使用 date -s “2014-1-4 12:16:00” 在 root 权限下键入时间,使其与 主机同步 
第二种:http://blog.youkuaiyun.com/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.)

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

日志报错如下

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)
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

解决方法是:

[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

原文来自:http://blog.youkuaiyun.com/ZHAOLEI5911/article/details/50556825

在部署 HBase ,若 slave1 节点无法连接,通常涉及网络配置、主机名解析、HBase 配置文件等多个方面。以下是需要检查和配置的关键文件及步骤: ### 网络与基础环境配置 确保所有节点之间的网络通信正常,包括 IP 连通性和端口开放情况。尤其是 HBase 使用的默认端口如 `16010`(Web UI)、`16000`(HMaster)、`16010`(HRegionServer)等。 #### `/etc/hosts` 文件 确保所有节点的 `/etc/hosts` 文件中正确配置了主从节点的 IP 地址和主机名映射。例如: ``` 192.168.1.10 master 192.168.1.11 slave1 192.168.1.12 slave2 ``` 该配置应保持一致性,并通过以下命令同步到其他节点: ```bash scp /etc/hosts slave1:/etc/hosts scp /etc/hosts slave2:/etc/hosts ``` ### HBase 配置文件 #### `conf/regionservers` 此文件列出了所有运行 HRegionServer 的从节点主机名或 IP 地址。确保 `slave1` 在此文件中: ``` slave1 slave2 ``` 如果使用的是 IP 地址,应确保其与实际网络接口匹配。 #### `conf/hbase-site.xml` 确保以下关键配置项正确设置,特别是与分布式模式相关的参数: ```xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,slave1,slave2</value> </property> <property> <name>hbase.master</name> <value>master:16000</value> </property> </configuration> ``` 其中,`hbase.rootdir` 指向 HDFS 上的存储路径,`hbase.zookeeper.quorum` 列出所有 Zookeeper 节点(HBase 自带 Zookeeper 实现),`hbase.master` 指定 HMaster 的地址。 #### `conf/hbase-env.sh` 确保 Java 环境变量已正确配置: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` 同,确保 HBase 启动脚本使用的 SSH 设置正确: ```bash export HBASE_SSH_OPTS="-i ~/.ssh/id_rsa" ``` ### 日志排查 查看 `logs/hbase-<user>-master-slave1.log` 或 `logs/hbase-<user>-regionserver-slave1.log` 文件,确认是否有连接异常、权限问题或端口占用等情况。 ### SSH 配置 确保从主节点可以无密码登录到 `slave1` 和 `slave2`,并测试如下命令是否成功执行: ```bash ssh slave1 "hostname" ``` ### 特殊情况处理 如果发现 `HRegionServer` 正常运行但 `HMaster` 不可见,可以通过访问 `http://master:16010` 查看 HMaster 的状态。如果显示为 Standby 状态,可通过 Hadoop 的 HA 命令将其切换为 Active 状态[^4]。 ### 示例代码:启动 HBase 集群 ```bash # 启动 Hadoop 集群 start-dfs.sh start-yarn.sh # 启动 HBase start-hbase.sh ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值