背景

在做大数据项目时搭建HBase集群,配置好文件后启动集群,HMaster进程两秒后自动消失。HRegionServer还在。
本质上就是HMaster没启动起来。于是查看logs文件夹,发现报错:

:9000 failed on connection exception:
java.net.ConnectException: 拒绝连接

查询网上资料后发现就是两种思路
一种是:防火墙没有关闭或者开启了没有开放9000端口导致的

这种问题的朋友可以先检查一下防火墙

> sudo service iptables status
> sudo service iptables stop(立即生效,但重启后会失效)
> sudo chkconfig iptables off(永久生效)

另一种是9000端口已被占用。

但是我并不是这两种问题。启动HBase要满足的是:hdfs,yarn,zookeeper(如果在hbase-env.sh中管理zookeeper那一项选择了false)都已经启动,以及
防火墙关闭(或开放指定端口)应该就没啥问题。

解决

在配置文件hbase-site.xml中hbase.rootdir这一项需要和core-site.xml中的fs.defaultFS 的地址保持一致,因为这一步是去hdfs上创建hbase的指定文件夹,8020是namenode节点active状态下的端口号,9000端口是fileSystem默认的端口号。我的core-site.xml里还是写的8020端口,但是hbase-site.xml就写成了9000端口,就不太行了,要么就都8020,要么就都9000

顺便贴一下各个端口区别的学习资料:

hdfs各个端口的区别:https://blog.csdn.net/wyqwilliam/article/details/81592374

当我把后者也修改成8020端口后就好了。

另一个问题

但是HMaster依然启动后2秒就挂了,这次再次查看日志,起码不是9000端口的问题了,引入了新的问题:

master.HMaster: Failed to become active master java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so.

解决方案:
hbase-site.xml中添加

<property>
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>false</value>
</property>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐