JBOD 关于 cassandra 问题

Posted

技术标签:

【中文标题】JBOD 关于 cassandra 问题【英文标题】:JBOD on cassandra issue 【发布时间】:2019-08-07 09:12:13 【问题描述】:

我有带有 JBOD 配置的 3 节点 cassandra 集群。我有 4 个磁盘用于数据 /data1、/data2、/data3、/data4。现在,我们经常面临节点磁盘空间问题。当前 /data1 已满 (100%),其他磁盘 /data2(26%)、/data3(34%)、data4(17%) 在节点 1 上使用,其他节点在所有磁盘上都有足够的空间。

1)所以,我的问题是,如果有任何请求会出现在 cassandra 集群上并且数据会转到 node1 上的 /data1 会发生什么?请求失败?还是 cassandra 将管理并写入另一个有空间的磁盘?

2) JBOD 在 cassandra 中除了磁盘灾难恢复有用吗?

提前致谢!

【问题讨论】:

【参考方案1】:

数据应该均匀分布。您是一次添加一个磁盘还是一次添加所有磁盘?

您可以在http://thelastpickle.com/blog/2018/08/22/the-fine-print-when-using-multiple-data-directories.htmlhttp://thelastpickle.com/blog/2018/08/22/the-fine-print-when-using-multiple-data-directories.html Anthony Grasso 的文章中阅读更多关于其工作原理的信息

他和我的建议是,如果您想使用多个磁盘/数据目录,请尝试将它们与 LVM 或 ZFS 结合使用

【讨论】:

感谢 Rahul,但数据并未像我在问题中提到的那样分发。是的,仅在安装期间添加的所有磁盘。但我的问题是我所描述的 2 以上。 那么您可能在某些数据上有宽分区,并且出于显而易见的原因,这些宽分区必须在 SSTables 中聚集在一起。你可能想看看你的分区有多大,看看是否有一些真的很大。 这是数据分布不均的原因吧? @Rahul,我上面的两个问题呢? 虽然新数据无论是通过流还是通过新插入,它都会去不同的驱动器,但只要它认为旧的 SSTables 还在,它就会继续去磁盘 1 @感谢 Rahul 抽出宝贵时间。因此,如果 /data1 已满(100%),cassandra 将自动管理,然后它将数据写入其他磁盘并且我的查询不会失败。根据我的理解,sstables 是不可变的,那么为什么 cassandra 会考虑旧的 sstables 呢?

以上是关于JBOD 关于 cassandra 问题的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 更新无法正常工作

Meet Professor Cassandra Fraser

Cassandra 数据模型

Cassandra 简介

JAVA操作cassandra数据库

Spring Boot 1.4:Spring Data Cassandra 1.4.2 与 Cassandra 3.0 不兼容?