【问题标题】:FAILED TO WRITE PID installing Zookeeper无法写入 PID 安装 Zookeeper
【发布时间】:2013-10-18 05:24:56
【问题描述】:

我是 Zookeeper 的新手,安装和运行它是一个真正的问题。我不确定这里出了什么问题,但我会解释我正在做的事情以使其更清楚:

1.- 我已按照 Apache 提供的安装指南进行操作。这意味着下载 Zookeeper 发行版(稳定版)解压文件并移至主目录。

2.- 因为我使用的是 Ubuntu 12.04,所以我修改了 .bashrc 文件,其中包括:

export ZOOKEEPER_INSTALL=/home/myusername/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

3.- 在 conf/zoo.cfg 上创建一个配置文件

tickTime=2000
dataDir=/var/zookeeper
clientPort=2181

也尝试过:

dataDir=/var/log/zookeeper

dataDir=/var/bin/zookeeper

4.- 运行启动命令时

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

我安装了 Java,并且在 zookeper 目录中有一个 zookeeper.jar 文件,我认为它没有运行。 在stackoverflow上查看这里有一个人说他可以在输入后运行zookeeper

ssh localhost

但是当我尝试这样做时,我得到了这个错误

ssh: connect to host localhost port 22: Connection refused

请帮忙。我在这里试图解决它太久了。

zookeeper 入门指南: http://zookeeper.apache.org/doc/r3.1.2/zookeeperStarted.html 使用 shh localhost 解决了上一个案例 Zookeeper: FAILED TO WRITE PID

更新: 日志的权限是:

drwxr-xr-x 19 root root     4096 Oct 10 07:52 log

对于动物园管理员:

drwxr-xr-x  2 zookeeper         zookeeper    4096 Mar 23  2012 zookeeper

我应该改变其中的任何一个吗?

【问题讨论】:

  • /var/log/zookeeper 的发布权限?您似乎没有所需的权限
  • 请看我对同一问题的回答:stackoverflow.com/questions/11092636/…
  • 尝试使用“start-foreground”启动服务器以查看问题的完整日志

标签: apache-zookeeper


【解决方案1】:

这似乎是一个所有权问题;运行以下为我解决了这个问题。

$ sudo chown -R $USER /var/lib/zookeeper

注意 我在下面概述了我的步骤,这些步骤显示了我遇到的错误(与此 SO 问题中的错误相同)以及尝试尝试上述用户提出的解决方案,建议提供 zoo.cfg 作为参数。

13:01:29 ✔ ~  :: $ZK/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/Cellar/zookeeper/3.4.14/libexec/bin/../conf/zoo.cfg
Starting zookeeper ... /usr/local/Cellar/zookeeper/3.4.14/libexec/bin/zkServer.sh: line 149: /var/lib/zookeeper/zookeeper_server.pid: Permission denied
FAILED TO WRITE PID

13:01:32 ✘ ~  :: $ZK/bin/zkServer.sh start $ZK/conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/Cellar/zookeeper/3.4.14/libexec/conf/zoo.cfg
Starting zookeeper ... /usr/local/Cellar/zookeeper/3.4.14/libexec/bin/zkServer.sh: line 149: /var/lib/zookeeper/zookeeper_server.pid: Permission denied
FAILED TO WRITE PID
13:04:45 ✔ /var/lib  :: ls -la
total 0
drwxr-xr-x  4 root     wheel 128 Apr 19 18:55 .
drwxr-xr-x 27 root     wheel 864 Apr 19 18:55 ..
drwxr--r--  3 root     wheel  96 Mar 24 15:07 zookeeper
13:04:48 ✔ /var/lib  :: echo $USER
tallamjr
13:06:03 ✔ /var/lib  :: sudo chown -R $USER zookeeper
Password:
13:06:44 ✔ /var/lib  :: ls -la
total 0
drwxr-xr-x  4 root     wheel 128 Apr 19 18:55 .
drwxr-xr-x 27 root     wheel 864 Apr 19 18:55 ..
drwxr--r--  3 tallamjr wheel  96 Mar 24 15:07 zookeeper
13:06:48 ✔ ~  :: $ZK/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/Cellar/zookeeper/3.4.14/libexec/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

参考: - https://askubuntu.com/questions/6723/change-folder-permissions-and-ownership

【讨论】:

    【解决方案2】:

    似乎有各种原因会发生这种情况。这里有很多有用的答案!

    对我来说,我的 zoo.cfg 文件中的行结尾不正确,并且可能有不可见的字符,因此 zookeeper 试图创建像 /var/zookeeper?/var/zookeeper\r 这样的目录。重新修改 zoo.cfg 为我修复了一些问题,同时删除了 zoo_sample.conf。

    【讨论】:

      【解决方案3】:

      更改路径给dataDir=/tmp/zookeeper。如果它有效,那么它显然是访问问题

      但一般不建议使用 tmp 目录。

      【讨论】:

        【解决方案4】:

        转到 /usr/local/etc/
        你会发现zookeeper目录
        删除目录
        并重启服务器 - zkServer start

        【讨论】:

        【解决方案5】:

        尝试使用 sudo -E bin/zkServer.sh start

        【讨论】:

          【解决方案6】:

          默认的 zookeeper 安装(tar 提取)附带名为 conf/zoo_sample.cfg 的 conf 文件,而同一提取的 bin/zkServer.sh 期望 conf 文件称为 zoo.cfg 从而导致“没有这样的文件或目录”和“无法写入 pid”错误。因此,在运行 zkServer.sh 启动或停止 zookeeper 实例之前:

          • 将 conf 目录中的 zoo_sample.cfg 重命名为 zoo.cfg,或者
          • 给出 conf 文件的名称(和路径)(如 suggested by Ilya Lapitan),或者,当然
          • 编辑 zkServer.sh ;-)

          【讨论】:

            【解决方案7】:

            我在使用以下命令启动 zookeeper 时遇到了同样的问题:

            hadoop@ubuntu:~/hadoop/zookeeper/zookeeper-3.4.8$ bin/zkServer.sh 开始

            错误 [main] client.ConnectionManager$HConnectionImplementation: 节点 /hbase 不在 ZooKeeper 中。

            应该是大师写的。检查zookeeper.znode.parent 中配置的值。可能与主服务器中配置的不匹配。

            但以su 身份运行脚本解决了问题:

            hadoop@ubuntu:~/hadoop/zookeeper/zookeeper-3.4.8$ sudo bin/zkServer.sh 开始

            ZooKeeper JMX 默认启用使用配置: /home/hadoop/hadoop/zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg 启动 zookeeper ... 已启动

            【讨论】:

              【解决方案8】:

              当您为 dataDir 创建目录时,请确保使用 -p 选项。这将允许根据应用程序放置文件的需要创建后续目录。

              mkdir -p /var/log/zookeeperData 然后设置:

              dataDir=/var/log/zookeeperData

              【讨论】:

                【解决方案9】:

                我也遇到了同样的问题。在我的情况下,启动 Zookeeper 并直接指定配置文件很有用:

                /bin/zkServer.sh 启动 conf/zoo.conf

                【讨论】:

                • 这个答案应该更高。特别是如果以 root 身份运行错误。
                【解决方案10】:

                由于磁盘空间不足,这发生在我身上。导致 zookeeper 无法在 zookeeper 数据文件夹中创建 pid 文件。

                【讨论】:

                • 需要多少存储空间?我面临同样的问题,但解决方案对我有用。
                【解决方案11】:

                您似乎没有所需的权限。 /var/log 所有者将成为 root。 Zookeeper 将进程 ID 和数据快照存储在该目录中。生成的 zookeeper 服务器的进程 ID 存储在文件 -zookeeper_server.pid(截至 3.3.6)

                如果你有root权限,你可以用sudo(root)权限启动zookeeper,它应该可以工作,但绝对不推荐。确保以与目录所有者相同(或更高)的权限启动 zookeeper。

                在您的主文件夹中创建一个新目录,例如 /home/username/zookeeper-data。 让dataDir 指向该目录,它应该可以工作。

                【讨论】:

                • 我已经按照您所说的更改了 dataDir 并且它有效。但是以后开发的时候会不会有什么问题呢?我已经更改了日志和 zookeeper 目录的权限,允许用户和组在上面写,但它没有用。顺便谢谢你的回答。
                • 您还可以将 dataDir(在您的情况下为 /var/log/zookeeper/)的写入权限授予运行 zookeeper 的用户...sudo chmod go+w /var/log/zookeeper
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-02-01
                • 2017-01-16
                • 1970-01-01
                • 2015-09-09
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多