问题
I am new to Zookeeper and it has being a real issue to install it and run. I am not sure what is wrong in here but I will explain what I've being doing to make it more clear:
1.- I've followed the installation guide provided by Apache. This means download the Zookeeper distribution (stable release) extracted the file and moved into the home directory.
2.- As I am using Ubuntu 12.04 I've modified the .bashrc file including this:
export ZOOKEEPER_INSTALL=/home/myusername/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
3.- Create a config file on conf/zoo.cfg
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
and also tried with:
dataDir=/var/log/zookeeper
and
dataDir=/var/bin/zookeeper
4.- When running the start command
zkServer.sh start or `bin/zkServer.sh start` nothing happens and always returns this
JMX enabled by default
Using config: /home/sasuke/zookeeper-3.4.5/bin/../conf/zoo.cfg
mkdir: cannot create directory `/var/zookeeper': Permission denied
Starting zookeeper ... /home/sasuke/zookeeper-3.4.5/bin/zkServer.sh: line 113: /var/zookeeper/zookeeper_server.pid: No such file or directory
FAILED TO WRITE PID
I have Java installed and inside the zookeper directory there is a zookeeper.jar file that I think it's not running. Checking here on stackoverflow there was a guy that said he could run zookeeper after typing
ssh localhost
But when I try to do it I get this error
ssh: connect to host localhost port 22: Connection refused
Please help. I've being here trying to solve it for too long.
Getting started guide of zookeeper: http://zookeeper.apache.org/doc/r3.1.2/zookeeperStarted.html Previous case solved with the shh localhost Zookeeper: FAILED TO WRITE PID
UPDATE: The permissions for log are:
drwxr-xr-x 19 root root 4096 Oct 10 07:52 log
and for zookeeper:
drwxr-xr-x 2 zookeeper zookeeper 4096 Mar 23 2012 zookeeper
Should I change any of these?
回答1:
It seems you do not have the required permissions. The /var/log
owner is is going to be root. Zookeeper stores the process id and snapshot of data in that directory. The process id of the spawned zookeeper server is stored in a file -zookeeper_server.pid
(as of 3.3.6)
If you have root previleges, you could start zookeeper with sudo
(root) previleges, it should work but definitely not recommended. Make sure you start zookeeper with the same(or higher) permissions as the owner of the directory.
Create a new directory in your home folder like /home/username/zookeeper-data
.
Let dataDir
point to that directory and it should work.
回答2:
I have had the same problem. In my case was useful to start Zookeeper and directly specify a configuration file:
/bin/zkServer.sh start conf/zoo.conf
回答3:
The default zookeeper installation (tar extract) comes with the conf file named conf/zoo_sample.cfg
while the same extract's bin/zkServer.sh
expects the conf file to be called zoo.cfg
thereby resulting in a "No such file or dir" and the "failed to write pid" error. So before running zkServer.sh to start or stop zookeeper instance, either:
- rename the
zoo_sample.cfg
in the conf dir tozoo.cfg
, or - give the name (and path) to the conf file (as suggested by Ilya Lapitan), or, of course
- edit zkServer.sh ;-)
回答4:
When you create the Directory for dataDir make sure to use the -p
option. This will allow subsequent directories to be created as required by the application placing files.
mkdir -p /var/log/zookeeperData
Then set:
dataDir=/var/log/zookeeperData
回答5:
This happens to me due to low disk space. cause zookeeper cant create pid file inside zookeeper data folder.
回答6:
I have faced the same issue while starting the zookeeper with this command:
hadoop@ubuntu:~/hadoop/zookeeper/zookeeper-3.4.8$ bin/zkServer.sh start
ERROR [main] client.ConnectionManager$HConnectionImplementation: The node /hbase is not in ZooKeeper.
It should have been written by the master. Check the value configured in zookeeper.znode.parent
. There could be a mismatch with the one configured in the master.
But running the script as su
rectified the issue:
hadoop@ubuntu:~/hadoop/zookeeper/zookeeper-3.4.8$ sudo bin/zkServer.sh start
ZooKeeper JMX enabled by default Using config: /home/hadoop/hadoop/zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
回答7:
Go to /usr/local/etc/
You will find zookeeper directory
delete the directory
and restart the server - zkServer start
回答8:
Change the path give dataDir=/tmp/zookeeper. If it works then its clearly access issues
But its generally not advisable to use tmp directory.
回答9:
Seems there's all kinds of reasons this can happen. So many helpful answers here!
For me, I had improper line endings in my zoo.cfg file, and possibly invisible characters, so zookeeper was trying to create directories like /var/zookeeper?
and /var/zookeeper\r
. Reworking my zoo.cfg a bit fixed it for me, along with deleting zoo_sample.conf.
回答10:
try to use sudo -E bin/zkServer.sh start
来源:https://stackoverflow.com/questions/19295978/failed-to-write-pid-installing-zookeeper