Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020

表现:hbase启动成功后,项目运行一会后崩溃:
Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020
不管三七二十一,肯定是数据库连接出问题了,赶快去虚拟机内hbase安装路径下的logs目录查看日志
方法:查看Hbase安装目录下的logs,首先看Master的出错原因是,发现出错原因是RegionServer启动失败,日志中记录的error reason是:

Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020

然后,检查端口是否被占用
netstat -tunlp |grep 端口号
显示结果为空,表示并没有出现端口占用情况
查看linux的主机ip地址:
ifconfig -a
发现ip地址是:
Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020
这里发现ip地址已改变,修改 /etc/hosts中的映射(右边是主机名)
Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020
重新启动hadoop和hbase.
检查进程
Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020
检查web界面
Caused by: java.net.BindException: Problem binding to hbase-virtual-machine/192.168.19.128:60020
发现启动成功
分析原因:来自于早晨还没睡醒的无脑操作引起虚拟机改变了ip地址,但是居然还能启动运行一会在崩我是没有想到的。这里猜测会不会是因为缓存的原因。
总结:出错原因很简单,修改也不麻烦。但是有时候真的很难想到。想起柯南的一句话,事情的真相往往是你最先排除的那个。又可以愉快地玩耍了
注:如果要用hbase client的api访问hbase数据库的话还要修改主机的hosts文件映射。