前言
在寫之前我真的想借這個(gè)地方吐槽一下zk单刁,因?yàn)閷懗绦虬胄r(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)真看6嵫堋!喜命!別覺(jué)得沒(méi)問(wèn)題9瞪场:尤啊) -
如果是自己搭的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文件先刪除之后再初始化R蛎睢L翟鳌!一定要先刪除攀涵!格式化命令:
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)是否有足夠的讀寫權(quán)限!E辍炉媒!非常重要!昆烁!
7.最后實(shí)在不行吊骤,可以用一個(gè)干干凈凈的壓縮包重新裝過(guò)。静尼。但愿你不要走到這一步白粉,如果你的數(shù)據(jù)非常重要,請(qǐng)?jiān)谥匦卵b之前不要?jiǎng)h掉存放數(shù)據(jù)的目錄鼠渺。
最后鸭巴,祝填坑路上的我們頭發(fā)越來(lái)越多!O等摺^瓤邸!