myid文件缺失
现象 :zookeeper无法启动;
异常 :$dataDir/myid file is missing;
原因 :zk集群中的节点需要获取myid文件内容来标识该节点,缺失则无法启动;
解决 :在zk数据文件存放目录下(见 $ZK/conf/zoo.cfg,dataDir属性),创建myid文件并写入一个数字用来标识本节点(类似这个节点的身份证)。
详细异常如下:
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /home/crxj-coll/zookeeper-3.4.5/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:121)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:101)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
Caused by: java.lang.IllegalArgumentException: /var/tmp/zookeeper/myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:344)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:117)
... 2 more
Invalid config, exiting abnormally
处理过程:
更改zookeeper/conf/zoo.cfg,找到dataDIr,修改如下:(在你的zookeeper目录下创建data文件夹)
dataDir=$ZK_HOME/data
在data文件夹中
创建myid文件,在里面设置一个数字(每个节点的这个数字不能一样)
之后zookeeper就可以正常启动了!