前言
在寫(xiě)之前我真的想借這個(gè)地方吐槽一下zk,因?yàn)閷?xiě)程序半小時(shí),因?yàn)閦k問(wèn)題可能就是一直調(diào)bug,調(diào)完這個(gè)出現(xiàn)另外一個(gè),結(jié)果發(fā)現(xiàn)大多數(shù)情況還是因?yàn)閦k連不上導(dǎo)致的,一句小聲的nm送一下,然后繼續(xù)。。
正題
zk連不上最常見(jiàn)的log報(bào)錯(cuò)信息就是Connection Refused。
如果你用了hbase,那么就會(huì)觸發(fā)一系列問(wèn)題,比如hmaster,hregionser連不上?或者一會(huì)兒退出等問(wèn)題。
問(wèn)題排查
那么zk連不上的原因有哪些?主要還是要看log信息報(bào)什么錯(cuò),可以快速幫助你排查問(wèn)題。log文件的配置可能是你自己配置文件中修改過(guò)。
如果你是hadoop時(shí)連接不上,那么請(qǐng)看hadoop/logs/
如果zookeeper的進(jìn)程不能啟動(dòng)導(dǎo)致zk連不上,那么請(qǐng)看zookeeper/logs/
如果你是使用hbase時(shí)連接不上,那么請(qǐng)看hbase的log。默認(rèn)應(yīng)該是在hbase/logs/
比如使用hbase連不上時(shí),先去hbase/logs看原因,如果是zookeeper問(wèn)題可以繼續(xù)去zookeeper/logs查看。
- 集群的時(shí)間是否同步
如果時(shí)間相差過(guò)多可以選擇ntp時(shí)間同步,自行百度,不管是不是這個(gè)問(wèn)題,都建議把集群的時(shí)間同步 - 有沒(méi)有網(wǎng)
ping ip
沒(méi)網(wǎng)的話百度解決 - 端口是否可用
telnet ip 2181
如果不可用,查看占用的端口號(hào)
netstat -anp|grep 2181
查看防火墻是否開(kāi)啟,一種暴力的解決方法是直接關(guān)閉防火墻
sudo ufw disable
kill掉被占用的進(jìn)程,重新啟動(dòng)zk,hbase服務(wù) - 如果你端口不可用,但是端口卻沒(méi)有被占用
那么就需要認(rèn)真檢查一下配置問(wèn)題(以下都需要認(rèn)真看?。。e覺(jué)得沒(méi)問(wèn)題?。。?/li> -
如果是自己搭的zookeeper那么hbase-env.sh文件中,要將這個(gè)參數(shù)修改為false,如果用自帶的話就是true。
zk - 檢查JAVA_HOME
hadoop/etc/hadoop/hadoop-env.sh 和hbase/conf/hbase-env.sh以及zoo-env.sh都要檢查!!
java_home
輸出JAVA_HOME
echo $JAVA_HOME
據(jù)說(shuō)jdk_9會(huì)出現(xiàn)一些奇怪的問(wèn)題,建議用jdk_8 - 常見(jiàn)的配置問(wèn)題
1.每個(gè)slave的myid文件中id數(shù)是否與zoo.cfg配置中一致,并認(rèn)真檢查路徑是否一致
2.如果你是修改了配置文件的一些東西后重新啟動(dòng)發(fā)現(xiàn)連不上,一定要認(rèn)真檢查有沒(méi)有更改文件路徑的參數(shù),如果更改了往后看,如果只是修改了其他諸如調(diào)整內(nèi)存大小的參數(shù)那么就重新啟動(dòng)服務(wù)就好了。
3.如果修改了和namenode以及datanode有關(guān)的配置,那么先關(guān)閉服務(wù)后,把hadoop的tmp,log文件先刪除之后再初始化?。?!一定要先刪除!格式化命令:
hdfs namenode -format
4.hdfs-site.xml中defaultFS路徑是否與habse-site.xml中一致
5.hbase-site.xml中配置的文件路徑是否給予了足夠的權(quán)限,沒(méi)有的話可以這樣
sudo chown -R hadoop:hadoop /usr/local/hbase
sudo chown -R hadoop:hadoop /usr/local/hadoop
6.我自己在hbase單機(jī)版的時(shí)候犯了一個(gè)錯(cuò)誤就是我更換hbase版本后,為了方便直接拷貝了之前版本的conf/hbase-site.xml和hbase-env.sh,導(dǎo)致配置中的文件路徑?jīng)]有足夠的權(quán)限,所以一定要認(rèn)真檢查各配置文件中的路徑是否存在已經(jīng)是否有足夠的讀寫(xiě)權(quán)限?。?!非常重要??!
7.最后實(shí)在不行,可以用一個(gè)干干凈凈的壓縮包重新裝過(guò)。。但愿你不要走到這一步,如果你的數(shù)據(jù)非常重要,請(qǐng)?jiān)谥匦卵b之前不要?jiǎng)h掉存放數(shù)據(jù)的目錄。
最后,祝填坑路上的我們頭發(fā)越來(lái)越多?。。?!

