首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra全空间计算

Cassandra全空间计算
EN

Stack Overflow用户
提问于 2021-01-10 10:59:53
回答 3查看 405关注 0票数 3

我们已经被一个产品供应商推荐使用Cassandra来获得更好的可扩展性。

我们的数据范围约为10 TB。产品供应商坚持说,我们可以将这10个TB存储在6个节点中,每个节点都有2TB的空间。

这怎麽可能?我们需要假设哪些复制因子或压缩才能实现上述目标?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-10 11:55:00

那得看情况。

当您使用默认的LZ4Compressor时,cassandra中的数据将被压缩。如果出于简单的原因,我们完全忽略了压缩速率,那么您可以使用这个工具来计算节点负载:

https://www.ecyrd.com/cassandracalculator/

在集群大小为6的情况下,我建议使用一个RF=3,这意味着每个节点必须保存50%的数据,这在您的情况下是5TB (未压缩的)。

即使有了RF=1 (您不应该使用),每个节点也必须保存全部数据的17%。

票数 2
EN

Stack Overflow用户

发布于 2021-01-10 12:18:31

这是一个比较难回答的好问题。Cassandra节点的大小实际上取决于因素的数量,而不仅仅取决于数据的大小:

  • 为了能够运行需要执行的查询,您需要考虑数据的反规范化。
  • 在数据库中存储什么样的数据--数字、文本、二进制等等--如果使用压缩,这将影响压缩比。(我看到了不同的值--从压缩到原始数据大小的10%,到数据不可压缩时的负压缩比)
  • 表的分区模式(宽分区与窄分区,因为对于具有窄分区的热数据,您可能需要禁用压缩等)。
  • 您需要考虑到存储元数据的开销,例如TTL和写时间(您拥有的列越多,开销就越高)
  • 您需要考虑到关于维护任务所必需的空闲磁盘空间的建议,例如压缩、快照等。
  • ..。

通常,建议创建一个测试环境(例如,在AWS上),并执行数据生成和负载测试,以找到适合硬件的大小,并了解磁盘上将存储多少数据。我个人建议使用高性能的NoSQLBench &在数据生成方面非常灵活--有大量现有模式可用于初始测试,您也可以创建自己的模式。(你仍然可以使用内置卡桑德拉-压力,但它不那么灵活。也有tlp-应力,但它也可能比NoSQLBench稍微不灵活)

有许多现有的文档可能有助于能力规划和调优(当然还有更多的文档):

关于您的具体设置,建议使用RF=3和6个节点,并保留磁盘空间(悲观的情况是所有磁盘空间的50%,可以说是磁盘空间的30%-35%),您的集群可以存储2.5到2.6Tb的数据(不使用任何压缩):(2Tbx0.65x6)/3。要使它存储10 2Tb的数据,您的压缩比应该是原始大小的25%,但这对您的数据来说可能不可能。

票数 1
EN

Stack Overflow用户

发布于 2021-01-11 13:07:47

Cassandra集群大小取决于多种因素,而不仅仅是RDBMS中显示的原始数据。

一致性-您应该考虑您的读/写一致性,因此您必须决定您的RF(复制因子)数据建模-您必须确保您的数据模型,需要注意分区和集合您正在使用。压实策略-在卡桑德拉,有三种类型的压实策略。所有这些都是为了不同的目的

  1. STCS很适合写
  2. LCS对阅读有好处
  3. TWCS对于我们了解TTL的时间序列是很好的.

你必须确保大约50%的磁盘是免费的这些压缩。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65652509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档