目录
前言
一、现场还原
二、问题诊断
三、问题原因
总结
最近由于项目需要,在服务器上需要搭建Hbase完全分布式集群环境。开发环境,采用的是最小节点的方式进行搭建(即3个节点的模式)。资源环境列表如下:
序号 | 依赖组件 | 说明 |
1 | jdk-8u201-linux-x64.tar.gz | 基础的jdk依赖 |
2 | hadoop-3.1.3.tar.gz | hadoop依赖 |
3 | apache-zookeeper-3.5.7.tar.gz | zookeeper协调器 |
4 | hbase-2.4.11-bin.tar.gz | hbase数据库 |
以上组件都部署在三台不同的物理机节点中,操作系统是centos7.X。本场景zookeeper用于为hbase提供外部的协调器,而不是采用Hbase内置的Zookeeper。众所周知,zookeeper依赖于jdk,需要进行提前安装并配置好相应的环境变量。本文重点在于讲解zookeeper的问题,因此关于jdk的安装请查询相关网关可以解决。
闲言少叙,本文主要讲解在Centos7中,JDK正确安装及配置,系统防火墙也正常配置,但Zookeeper无法启动的一种可能问题,及主要的解决方案。这里也得到一个博主的帮助,再此记录,如果有朋友遇到类似的问题,能帮助您解决相应的问题。
当在目标服务器中,进入zookeeper的启动目录中,准备启动zookeeper,命令如下:
cd /software/zookeeper/bin/
./zkServer.sh start
上述命令执行之后,zookeeper并没有正常启动。在窗口中看到如下结果:
ZooKeeper JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START
进一步的,使用zookeeper的状态查看命令:
./zkServer.sh status
将看到下面的执行结果:
ZooKeeper JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
相信很多同学在看到以上的错误后,多半都会直接复制这个报错信息去搜索引擎一顿狂搜,我一度也这么干过(很容易被误导):
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
打开这些文章,如果已经解决您的问题,那么您可以不用看下去了。因为我在看了这些文章,问题依然存在。通常来说,可能会有问题都是以下几点:
1、防火墙没有关
2、jdk没有正确安装
3、zoo.cfg配置文件有误
但很不幸,这些都确认没有问题。
首先jdk已配置(java -version),防火墙查看命令:systemctl status firewalld
其次防火墙已经关闭(如果没有关闭可执行:systemctl stop firewalld),zoo.cfg配置确认没有冲突没有问题。
看到这里,还有一个办法,实际去看一下zookeeper的运行日志,我们找到zookeeper的logs目录,通过一下命令查看日志:
cd /logs
cat zookeeper-root-server-master.out
此时,真正的问题才开始显示出来:
报错信息如下:
找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain
到这里,再确认一下您下载zookeeper的版本,是不是apache-zookeeper-3.5.5以后的版本,如果您刚好是用的3.5.5以后的版本,那么请再检查一下,压缩包是不是不带bin。
其实出现这个问题的原因并不是我们配置的问题,而是我们下载软件的问题。也是在各种安装教程非常多的情况下(而且都是介绍3.5.5以前的版本安装的),大家以为下载的包是一样的,因此就忽略这个最基础的问题。找到问题后就很容易解决了,下载带bin的包即可。
其实Zookeeper官网上是有介绍的,不同版本的更新日志,只是大家没有仔细去看,当然这个粗心的人也包括作者本人。
打开zookeeper官网介绍:
相信大家一定都没注意吧,如果经历过各种无效的,真的比较崩溃就权当是一种教训吧。一定要下以下红框中的版本。
可以看到,带bin的包比不带bin的要大一下。将下载的包重新安装就好了。启动服务后可以看到正常。
以上就是本文的主要内容,本文主要讲解在Centos7中,JDK正确安装及配置,系统防火墙也正常配置,但Zookeeper无法启动的一种可能问题及解决办法,希望可以帮助你解决困境。
参考博客:
1、zookeeper-3.5.5安装报错:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain-新版本zookeeper易犯错误
2、zk报错:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain|Error contacting service