找不到自动清除的 Zookeeper java 类
Posted
技术标签:
【中文标题】找不到自动清除的 Zookeeper java 类【英文标题】:Zookeeper java class for autopurge not found 【发布时间】:2018-03-16 09:19:01 【问题描述】:我有这个 zookeeper 配置:
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
snapCount=3000000
我的/opt/zookeeper-3.4.11/data
目录变大了,没有autopurge
发生。
我尝试用zkCleanup.sh
清理这个烂摊子,但它什么也没做。
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ls /opt/zookeeper-3.4.11/data/version-2/ | wc -l
18
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ./zkCleanup.sh -n 10
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ls /opt/zookeeper-3.4.11/data/version-2/ | wc -l
18
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11$ ls data/version-2/
log.9028ed00e log.902eafb66 log.903362dcb log.90374bde5 log.903b5f685 log.903f8e16a log.b000000a8 log.b004d4eac log.b0083c3e1
log.902b9c065 log.9030ece30 log.903590e4a log.90395a935 log.903d9b0f0 log.90421e5d6 log.b002462e2 log.b0068bba3 log.b00a38f08
我的 zkCleanup.sh https://pastebin.com/Q9XSpSfz
UPD:来自新动物园清理脚本的日志:
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ./zoo_clean.sh -n 10
/opt/zookeeper-3.4.11/data
/opt/zookeeper-3.4.11/logs
/usr/lib/jvm/java-8-oracle/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /opt/zookeeper-3.4.11/bin/../build/classes:/opt/zookeeper-3.4.11/bin/../build/lib/*.jar:/opt/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/opt/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/opt/zookeeper-3.4.11/bin/../conf: org.apache.zookeeper.server.PurgeTxnLog /opt/zookeeper-3.4.11/logs /opt/zookeeper-3.4.11/data -n 10
什么都没发生
知道如何解决这个问题吗?
【问题讨论】:
试试jar -tvf zookeeper.jar |grep PurgeTxnLog
。还有/opt/zookeeper-3.4.11/data
和/opt/zoo/data
是什么关系。
为什么不使用zkCleanup.sh
而不是自己填写java
命令。似乎您没有在类路径中包含 slf4japi
和 slf4j-log4j12
。
zkCleanup.sh 不工作,我不懂 bash。也许其中有任何问题。但是脚本执行没有问题。
试试./bin/zkCleanup.sh -n 10
你能在问题正文中更新它吗?并列出/opt/zookeeper-3.4.11/data/version-2/
下的文件
【参考方案1】:
这是 3.4.11 docker image https://github.com/apache/zookeeper/pull/475zkCleanup.sh 中的一个 bug
简单的解决方法是从
编辑 zkCleanup.shorg.apache.zookeeper.server.PurgeTxnLog "$ZOODATALOGDIR" "$ZOODATADIR" $*
到
org.apache.zookeeper.server.PurgeTxnLog "$ZOODATADIR" "$ZOODATALOGDIR" $*
【讨论】:
【参考方案2】:conf/zoo.cfg
中的dataDir
和dataLogDir
是相对路径,以下说明可能会有所帮助:
cd /opt/zookeeper-3.4.11
./bin/zkCleanup.sh -n 10
然后你可以看到如下输出:
Removing file: Mar 15, 2018 1:57:16 PM data/log/version-2/log.9028ed00e
Removing file: Mar 12, 2018 5:33:11 PM data/log/version-2/log.902eafb66
【讨论】:
做这个,没有任何反应,可能是shell脚本zkCleanup.sh中的问题。将其添加到主题。【参考方案3】:https://clickhouse.yandex/docs/en/operations/tips/#zookeeper Clickhouse 需要 zookeper 3.5+
【讨论】:
Zookeeper 3.4.11 支持的选项 autopurge.snapRetainCount 和 autopurge.purgeInterval以上是关于找不到自动清除的 Zookeeper java 类的主要内容,如果未能解决你的问题,请参考以下文章
Windows环境安装及启动Zookeeper详细历程(含闪退找不到JAVA_HOME及无限报错原因)
idea Error:(4, 25) java: 找不到符号符号:类 xxx位置:程序包 xxx.xxx程序包xxx不存在
错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain