我正在寻找一些帮助,以弄清如何清除Zookeeper中看起来像是腐败的内容。我们的设置在Solr Cloud上运行良好。在某个时刻,群集节点之一上的根分区已满,系统出现故障。备份后,Solr没有响应,无法启动。
看起来Zookeeper数据中有损坏。每当客户端尝试访问节点/ overseer / queue时,它将终止连接并出现错误:
打开zk客户端 shell 可以使我们列出其他节点,但是如果尝试在/ overseer节点上删除/列出/清除/等,它将失败并显示此错误。
是否有任何手动步骤可以解决此问题?任何帮助,将不胜感激。
编辑:而且看起来/ overseer / queue节点下有超过200k个子节点。也许这与它有关,但是如果我们甚至无法列出子节点,就无法删除它们。
最佳答案
Zookeeper数据库没有损坏,但是zookeeper对最大响应大小有限制,并且列出200k个znode的子代超过了此最大响应大小。
要解决此问题,可以将jute.maxbuffer设置为较大的值,以便您列出和删除队列下的节点。您需要在所有服务器和要清理的客户端上更新此设置。
有一个开放的bug可以解决此问题ZOOKEEPER-1162。
关于hadoop - 如何清除Zookeeper腐败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22079622/