我有一个 3 节点的 zookeeper 集群正在运行,其中一个节点的数据库损坏,我遇到了麻烦。现在我在文档中发现,必须借助 cron 运行以下命令定期清除该数据库:
java -cp zookeeper.jar:log4j.jar:conf org.apache.zookeeper.server.PurgeTxnLog /var/lib/zookeeper/ /var/lib/zookeeper/version-2/ -n 3
不幸的是我确实收到了这个错误:
线程“main”中的异常 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.apache.zookeeper.server.PurgeTxnLog.(PurgeTxnLog.java:45) 导致的原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有 1 个
是什么原因造成的?我该如何防止 zookeeper 由于日志条目太多而再次破坏数据库?
答案1
slf4j 的 jar 在 classpath 中缺失;您可以手动添加它们,但最好使用zkCleanup.sh
(zookeeper 自带的)。