【问题标题】:zookeeper + Kafka - Unable to create data directoryzookeeper + Kafka - 无法创建数据目录
【发布时间】:2016-06-04 08:33:15
【问题描述】:

我在单节点中使用 zookeeper 3.4.8 并尝试使用 kafka。

当我运行这个命令时:

zookeeper-server-start.sh /usr/local/kafka_2.9.2-0.8.2.2    /config/zookeeper.properties

我收到以下错误:

[2016-02-22 17:32:41,661] ERROR Unexpected exception, exiting abnormally (org.apache.zookeeper.server.ZooKeeperServerMain)
java.io.IOException: Unable to create data directory /var/zookeeper/version-2
    at org.apache.zookeeper.server.persistence.FileTxnSnapLog.<init>(FileTxnSnapLog.java:85)
    at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:104)
    at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:86)
    at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:52)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)

有什么建议吗?

【问题讨论】:

  • 听起来像是权限问题。 sudo 可以执行命令吗?

标签: apache-kafka apache-zookeeper


【解决方案1】:

您可能没有写入目录log.dirs 的权限(请参阅zookeeper.properties)。将目录更改为其他目录,更改当前log.dirs 目录的权限设置或以其他用户身份运行Kafka。您可以使用命令ls -l /var/zookeeper 查看当前权限,然后使用chmod 更改权限。

【讨论】:

  • 我很高兴它可以工作,但我建议更改文件夹权限,而不是将 Zookeeper 作为 sudo 运行。
【解决方案2】:

我在 Windows PC 上遇到此设置的问题:

dataDir=c:/data/zoo/

因此出现此错误:

2016-12-02 15:29:25,327 [myid:] - ERROR [main:ZooKeeperServerMain@64] - Unexpected exception, exiting abnormally
java.io.IOException: Unable to create data directory ??:\data\zoo\version-2

问题已通过更改解决(我已将 C 盘上的 ZooKeeper 解包)

dataDir=/data/zoo/

如果需要,也可以以管理员身份运行命令行工具

【讨论】:

    【解决方案3】:

    一个原因可能是为 zoo.config 文件指定的路径不合适。 网上很多解决方案都指定路径为“:\zookeeper-3.4.7\data”。

    将地址指定为从 C: 驱动器到数据文件夹的完整路径,而不是上述格式。它对我有用。 (不要忘记用双斜杠 \ 而不是一个,以防你在 Windows 上)

    【讨论】:

    • 情况确实如此,并且已修复。分享我正确的数据目录:“dataDir= C:\\Program Files\Apache Zookeeper\zookeeper-3.4.11\data”
    【解决方案4】:

    在我的 windows 10 系统中,使用 zookeeper 3.4.10。 dataDir 属性应该设置为:\\\\zookeeper\\\\data,而不是d:\zookeeper\data。它也可以设置为 linux 文件系统分隔符(d:/zookeeper/data)。那么这个问题应该没问题。而在linux中,我认为是权限问题。当dataDir在windows系统的驱动C下时也会遇到。

    【讨论】:

      【解决方案5】:

      如果你在 Windows 10 机器上运行 zookeeper,我们需要像这样指定 dataDir 属性

      "dataDir=C:\zookeeper-3.4.13\data"

      【讨论】:

        【解决方案6】:

        在我的 windows 10 系统中,使用 zookeeper 3.4.13,以下示例路径有效:

        “dataDir=C:\\dev\\tools\\zookeeper-3.4.13\\data”

        你必须使用双反斜杠。

        【讨论】:

          【解决方案7】:

          对于 Windows,以下也适用:

          dataDir=C:\\zookeeper-3.4.14\\zookeeper-3.4.14\\data
          

          【讨论】:

            【解决方案8】:

            原因是zookeeper没有权限。正在尝试使用管理员角色来安装它。

            【讨论】:

              【解决方案9】:

              我遇到了同样的问题,这适用于

              sudo bin/zookeeper-server-start.sh config/zookeeper.properties

              【讨论】:

                【解决方案10】:

                zoo.cfg 上,您需要将目录更改为上述目录或类似内容:

                dataDir=C:/zookeeper-3.4.14/zookeeper-3.4.14/data
                

                【讨论】:

                  【解决方案11】:

                  对于 Windows,将 dataDir 设置为您没有访问限制的完整路径 - 没有引号(“”)

                  dataDir=C:\\your-path\
                  dataDir=C:\\zk\tmp\
                  

                  注意:我观察到某些路径的命令失败(尽管具有完全访问权限),并且以管理员身份运行命令提示符已解决。

                  【讨论】:

                    猜你喜欢
                    • 2021-06-28
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-04-24
                    • 2017-01-24
                    • 2014-05-23
                    • 2016-05-11
                    • 1970-01-01
                    • 2023-03-03
                    相关资源
                    最近更新 更多