博主在搭建hadoop集羣時,爲實現高可用(high-available),使用zookeeper 3.4.6,出現了一些小插曲,報錯(Error contacting service. It is probably not running),經歷一番折騰,最終完美解決。
下面提示幾個配置zookeeper容易入坑的點:
一、zoo.cfg配置文件(文件位置在zookeeper根目錄下的conf裏)
千萬不要亂改系統文件,網上的解決方案未必都是正確的,一般都是自己的配置出問題,請仔細查看。
- 兩個目錄的創建
- 端口號設置
記得在dataDir目錄下新建myid文件,對應集羣中的不同機器的dataDir目錄下myid文件的內容,如上圖所示,博主的node2節點的dataDir目錄下的myid內容是1,以此類推,node3節點下的內容則爲2。
- ip地址映射
就是修改hosts文件,linux下打開hosts的命令是:
vi /etc/hosts
按照博主的模板,做好映射。
- 如果發現防火牆未關閉等問題,請自行解決。
二、zookeeper正確的運行方法
由於zookeeper是集羣管理工具,又部署在每個節點上,所以啓動的時候一定將每個節點的zkService.sh都差不多同時啓動。
如圖,若報錯java.net.ConnectException(這樣的日誌文件在zookeeper根目錄下的conf文件夾的zookeeper.out)如下,則是你只開了一個節點,沒有將所有節點打開,同時打開即可,若超過6000ms,zookeeper就會自動關閉,切記!
啓動zookeeper時輸出日誌的啓動方法: zkServer.sh start-foreground
,無需進入文件系統即可看到控制檯輸出信息。