cassandra中多个数据目录的问题

knpiaxh1  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(467)

我们在ec2的cassandra中使用了多个数据目录。其中一个数据目录卷变为100%满,而另一个为30%空。波斯特说,许多写作失败,最终Cassandra停止。我调试并意识到我的磁盘故障策略设置为 stop . 后来我把它改成了 best_effort 试着启动Cassandra。如前所述,如果cassandra无法写入磁盘,该磁盘将被列入写入黑名单。因此,理想情况下,100%满的卷应该被列入写操作的黑名单。但是我在启动Cassandra的时候发现没有磁盘空间了,它也没有启动。那么,如果我们有多个数据目录,其中一个目录已经满了,我们该怎么办呢。我期望得到更好的答案,而不是仅仅增加整卷的大小。

yb3bgrhw

yb3bgrhw1#

我要检查的一件事是commitlog的位置。在写得很重的情况下 memtable_cleanup_threshold commitlog可能会累积到不需要的级别。在旧的旋转磁盘世界中,将commitlog保存在不同的物理磁盘上是一种公认的做法(考虑磁盘i/o吞吐量)。无论如何,我要确保commitlog不会导致磁盘占用空间的增加。
Cassandra将尝试在数据目录中均匀分布数据。也就是说,如果一个分区比另一个分区增长得快,那么您可能会向几个分区写入比其他分区高得不成比例的内容。如果是这样,那么您可能需要查看您的数据模型。
否则,如果节点被阻塞并且dir是不平衡的,那么最好的选择是擦除它,然后重新引导它。cassandra应该在bootstrap上将数据均匀地分布在dir上。

tmb3ates

tmb3ates2#

我们有一个使用多个数据目录的系统。在很大程度上,Cassandra让事情分布得很均匀。但是,如果您有一些较大的分层压缩表,则在压缩过程中可能会耗尽空间。一般来说,数据在卷之间的分布应该是紧密的,因为cassandra试图保持这一点。但同样,没有保证100%的平等。如果空间不足,请在事情“满”并停止之前添加另一个目录,希望cassandra能在为时已晚之前更好地展开事情。此时,您可能需要取下节点,添加另一个卷并移动周围的对象以使其更好地平衡,然后重新启动。

相关问题