前言
在写之前我真的想借这个地方吐槽一下zk,因为写程序半小时,因为zk问题可能就是一直调bug,调完这个出现另外一个,结果发现大多数情况还是因为zk连不上导致的,一句小声的nm送一下,然后继续。。
正题
zk连不上最常见的log报错信息就是Connection Refused。
如果你用了hbase,那么就会触发一系列问题,比如hmaster,hregionser连不上?或者一会儿退出等问题。
问题排查
那么zk连不上的原因有哪些?主要还是要看log信息报什么错,可以快速帮助你排查问题。log文件的配置可能是你自己配置文件中修改过。
如果你是hadoop时连接不上,那么请看hadoop/logs/
如果zookeeper的进程不能启动导致zk连不上,那么请看zookeeper/logs/
如果你是使用hbase时连接不上,那么请看hbase的log。默认应该是在hbase/logs/
比如使用hbase连不上时,先去hbase/logs看原因,如果是zookeeper问题可以继续去zookeeper/logs查看。
- 集群的时间是否同步
如果时间相差过多可以选择ntp时间同步,自行百度,不管是不是这个问题,都建议把集群的时间同步 - 有没有网
ping ip
没网的话百度解决 - 端口是否可用
telnet ip 2181
如果不可用,查看占用的端口号
netstat -anp|grep 2181
查看防火墙是否开启,一种暴力的解决方法是直接关闭防火墙
sudo ufw disable
kill掉被占用的进程,重新启动zk,hbase服务 - 如果你端口不可用,但是端口却没有被占用
那么就需要认真检查一下配置问题(以下都需要认真看!!!别觉得没问题!!) -
如果是自己搭的zookeeper那么hbase-env.sh文件中,要将这个参数修改为false,如果用自带的话就是true。
- 检查JAVA_HOME
hadoop/etc/hadoop/hadoop-env.sh 和hbase/conf/hbase-env.sh以及zoo-env.sh都要检查!!
输出JAVA_HOME
echo $JAVA_HOME
据说jdk_9会出现一些奇怪的问题,建议用jdk_8 - 常见的配置问题
1.每个slave的myid文件中id数是否与zoo.cfg配置中一致,并认真检查路径是否一致
2.如果你是修改了配置文件的一些东西后重新启动发现连不上,一定要认真检查有没有更改文件路径的参数,如果更改了往后看,如果只是修改了其他诸如调整内存大小的参数那么就重新启动服务就好了。
3.如果修改了和namenode以及datanode有关的配置,那么先关闭服务后,把hadoop的tmp,log文件先删除之后再初始化!!!一定要先删除!格式化命令:
hdfs namenode -format
4.hdfs-site.xml中defaultFS路径是否与habse-site.xml中一致
5.hbase-site.xml中配置的文件路径是否给予了足够的权限,没有的话可以这样
sudo chown -R hadoop:hadoop /usr/local/hbase
sudo chown -R hadoop:hadoop /usr/local/hadoop
6.我自己在hbase单机版的时候犯了一个错误就是我更换hbase版本后,为了方便直接拷贝了之前版本的conf/hbase-site.xml和hbase-env.sh,导致配置中的文件路径没有足够的权限,所以一定要认真检查各配置文件中的路径是否存在已经是否有足够的读写权限!!!非常重要!!
7.最后实在不行,可以用一个干干净净的压缩包重新装过。。但愿你不要走到这一步,如果你的数据非常重要,请在重新装之前不要删掉存放数据的目录。
最后,祝填坑路上的我们头发越来越多!!!!