【Hadoop】ZooKeeper集群搭建中的Connection refused而导致的启动失败

本文主要是介绍【Hadoop】ZooKeeper集群搭建中的Connection refused而导致的启动失败,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       

1. 前言

每一次搭建集群环境都像一次战斗,作战中任何一个细节的出错都会导致严重的后果,所以搭建中所需要做的配置如系统配置、网络配置(防火墙记得关)、用户权限、文件权限还有配置文件等等内容,都必须非常仔细,将失误扼杀在摇篮之中,避免因为粗心或者想要提高速度省下的一分钟,在后面付出几个小时的调试时间,因小失大实在不值,切记核对、核对再核对

今天就来说说在搭建ZooKeeper集群遇到的一个常见的问题Connection refused,也就是网上很多朋友也会出现的问题,问题的表现也许是一样,但是导致问题的原因却不尽相同,所以要重视自己的log文件报的错误,再确认外部大环境没有的情况下,集中力量解决log中的错误。

2. 我的问题

下面是我在搭建集群时报的错:

这是表面上错误
2016-12-08 05:11:07,890 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] - Cannot open channel to 5 at election address lzx15/192.168.80.175:3888
java.net.ConnectException: Connection refusedat java.net.PlainSocketImpl.socketConnect(Native Method)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:579)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:402)at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840)at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:579)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:402)at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840)at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762
 

这是实际上的错误
java.io.FileNotFoundException: /home/hadoop/data/zookeeper/zkdata/version-2/acceptedEpoch.tmp(Permissoin denied)


 

3. 其他人的解决方案:

主要为以下两点:

1)防火墙没关导致通讯失败,无法连接到其他节点上,我在反复检查之后确认防火墙已全部关闭,所以这个方法对我的问题无效

命令行:chkconfig iptables off (关闭防火墙)

    service iptables status(查看防火墙状态)

2)配置文件问题

  a. /zookeeper/conf/zoo.cfg文件配置问题

  例如dataDir格式不对,或者没有创建dataDir指定的文件等等,所以细心地检查你的配置文件,至于这个文件的内容请大家自行百度。

  b. dataDir指定的目录下创建myid文件,然后再文件写上你在zoo.cfg中该节点的对应server号,例如server.1,那么myid中就写1。

 再次反复检查,也没有发现错误,无效。

4. 我的解决方案  

找到zookeeper的log文件zookeeper.out在哪里?正常的路径是 你的zookeper安装目录/zookeeper.out,我在这个zookeeper.out只能找到那个表面的错误即Connection refused,所以一直找不到问题,最后我在无意中发现

[hadoop@lzx11 hadoop]$ cd /home/hadoop
[hadoop@lzx11 ~]$ ls
app  data  tools  zookeeper.out

我在这个zookeeper.out中找到我问题的真实错误,/home/hadoop/data/zookeeper/zkdata/version-2/acceptedEpoch.tmp(Permissoin denied),所以我去查看了verison-2文件夹的权限,发现他居然是root用户的,我立刻把它转到hadoop用户下,然后再重新启动集群,三个节点启动成功。

  5. 总结

  很多时候我们都会去针对遇到的表面问题来寻找解决思路,但是很多问题只是因为其他地方出了问题导致的,所以在你认为找到解决目前这个问题的方法后却仍然没有能解决问题的时候,想想会不会在前面某个地方出错,去别的地方找找答案,记住,钥匙一般不在锁里面。


这篇关于【Hadoop】ZooKeeper集群搭建中的Connection refused而导致的启动失败的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070223

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片