我们已经被一个产品供应商推荐使用Cassandra来获得更好的可扩展性。
我们的数据范围约为10 TB。产品供应商坚持说,我们可以将这10个TB存储在6个节点中,每个节点都有2TB的空间。
这怎麽可能?我们需要假设哪些复制因子或压缩才能实现上述目标?
发布于 2021-01-10 11:55:00
那得看情况。
当您使用默认的LZ4Compressor时,cassandra中的数据将被压缩。如果出于简单的原因,我们完全忽略了压缩速率,那么您可以使用这个工具来计算节点负载:
https://www.ecyrd.com/cassandracalculator/
在集群大小为6的情况下,我建议使用一个RF=3,这意味着每个节点必须保存50%的数据,这在您的情况下是5TB (未压缩的)。
即使有了RF=1 (您不应该使用),每个节点也必须保存全部数据的17%。
发布于 2021-01-10 12:18:31
这是一个比较难回答的好问题。Cassandra节点的大小实际上取决于因素的数量,而不仅仅取决于数据的大小:
通常,建议创建一个测试环境(例如,在AWS上),并执行数据生成和负载测试,以找到适合硬件的大小,并了解磁盘上将存储多少数据。我个人建议使用高性能的NoSQLBench &在数据生成方面非常灵活--有大量现有模式可用于初始测试,您也可以创建自己的模式。(你仍然可以使用内置卡桑德拉-压力,但它不那么灵活。也有tlp-应力,但它也可能比NoSQLBench稍微不灵活)
有许多现有的文档可能有助于能力规划和调优(当然还有更多的文档):
关于您的具体设置,建议使用RF=3和6个节点,并保留磁盘空间(悲观的情况是所有磁盘空间的50%,可以说是磁盘空间的30%-35%),您的集群可以存储2.5到2.6Tb的数据(不使用任何压缩):(2Tbx0.65x6)/3。要使它存储10 2Tb的数据,您的压缩比应该是原始大小的25%,但这对您的数据来说可能不可能。
发布于 2021-01-11 13:07:47
Cassandra集群大小取决于多种因素,而不仅仅是RDBMS中显示的原始数据。
一致性-您应该考虑您的读/写一致性,因此您必须决定您的RF(复制因子)数据建模-您必须确保您的数据模型,需要注意分区和集合您正在使用。压实策略-在卡桑德拉,有三种类型的压实策略。所有这些都是为了不同的目的
你必须确保大约50%的磁盘是免费的这些压缩。
https://stackoverflow.com/questions/65652509
复制相似问题