Zookeeper未启动

vaj7vani  于 2022-12-20  发布在  Apache
关注(0)|答案(5)|浏览(232)

我与zookeeper(http://zookeeper.apache.org/)工作.下载3.3.5和创建zoo.cfg并且放置在$ZOOKEEPER/conf,开始zookeeper使用zkServer开始.但是下面是错误
请问有谁能帮帮我吗?

nfig or no quorum defined in config, running  in standalone mode
 2012-08-01 23:20:32,175 [myid:] - ERROR [main:ZooKeeperServerMain@54] - Invalid
 arguments, exiting abnormally
 java.lang.NumberFormatException: For input string: "C:\Development\apps\zookeeper\zookeeper3.4.1\bin\..\conf\zoo.cfg"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
        at java.lang.Integer.parseInt(Integer.java:499)
        at org.apache.zookeeper.server.ServerConfig.parse(ServerConfig.java:60)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:83)
        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)
 2012-08-01 23:20:32,177 [myid:] - INFO  [main:ZooKeeperServerMain@55] - Usage: Z
 ooKeeperServerMain configfile | port datadir [ticktime] [maxcnxns]
 Usage: ZooKeeperServerMain configfile | port datadir [ticktime] [maxcnxns]
1sbrub3j

1sbrub3j1#

只需省略“start”参数并调用“bin\zkServer”即可。

o8x7eapl

o8x7eapl2#

在zoo.cfg文件中后藤数据目录=/usr/zookeeper/数据
在***data***文件夹中创建名为myid的文件并写入1。保存文件并启动zkServer
如果你运行多个示例,你需要为每个示例在data文件夹中创建myid文件,并分别写入1,2,3,实际上这是用于节点领导选举的。

cunj1qz1

cunj1qz13#

java.lang.NumberFormatException:对于输入字符串:"C:\开发\应用程序\zookeeper\zookeeper 3.4.1\bin ..\conf\zoo.cfg"
看起来您使用"start"和zoo.cfg文件的位置(即"C:\Development\apps\zookeeper\zookeeper3.4.1\bin ..\conf\zoo.cfg")以及另一个参数运行zkServer,该参数总计为3个参数:
./zk服务器启动C:\开发\应用程序\zookeeper\zookeeper 3.4.1\bin ...\配置文件\zoo.cfg xxx
因此,只需删除第二个和第三个参数即可解决问题,这使得命令:
./zk服务器启动
这背后的原因是zkServer用来初始化zookeeper系统的类(QuorumPeerMain,ZooKeeperServerMain)接受不同数量的参数,并相应地执行相应的操作。当您向zkServer提供两个参数时,这两个参数背后的含义应该是port和datadir。是的,port应该是一个数字,这里是您的炸弹。
顺便说一句,引导脚本是与帮助指令时,您执行他们没有任何段落。

6tqwzwtp

6tqwzwtp4#

打开zkServer.cmd,找到以下行

call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*

并删除行尾的%*。新的start cmd行应该是:

call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%"

然后运行zkServer startzkServer。现在应该可以运行了。
解释:
在ZkServer源代码. ZooKeeperServerMain.java

protected void initializeAndRun(String[] args) throws ConfigException, IOException, AdminServerException {
    try {
        ManagedUtil.registerLog4jMBeans();
    } catch (JMException e) {
        LOG.warn("Unable to register log4j JMX control", e);
    }

    ServerConfig config = new ServerConfig();
    if (args.length == 1) {
        config.parse(args[0]);
    } else {
        config.parse(args);
    }

    runFromConfig(config);
}

对于不同的参数长度有不同的解析方法。
如果只有一个参数,则将其作为配置文件路径。
如果有多个参数,则有固定的顺序。

1st arg(must): server port.
2nd arg(must): dataDir
3rd arg(optional): tickTime
4th arg(optional): maxClientCnxns

回到zkServer.cmd,在参数位置有两个占位符。

%ZOOMAIN% "%ZOOCFG%" %*

我相信开发人员希望为%*留有空间,所以它只有一个参数。
然而,对于大多数zk用户来说,他们习惯于使用zkServer start来启动服务器。
最后,cmd变为:

org.apache.zookeeper.server.quorum.QuorumPeerMain "C:\Users\...\scoop\apps\zookeeper\current\bin\..\conf\zoo.cfg" "start"

使用了两个参数。第一个参数,这里的配置路径,作为端口号。然后我们有一个例外。
更多,直接用zkServer启动zooKeeper怎么样?
在我的例子中,我面临着同样的问题。虽然我们没有任何参数。zkServer.cmd仍然传递一个空字符串给main方法。如下所示:

org.apache.zookeeper.server.quorum.QuorumPeerMain "C:\Users\...\scoop\apps\zookeeper\current\bin\..\conf\zoo.cfg" ""

结论:只需删除多余的占位符%*

s71maibg

s71maibg5#

sudo ./zkServer.sh start
[sudo] password for administrator:
/bin/java
ZooKeeper JMX enabled by default
Using config: apache-zookeeper-3.5.5/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START

解决方法是:download bin.tar file "apache-zookeeper-3.5.5-bin.tar.gz "我错误地下载了一个tar文件,

相关问题