首页 > 其他分享 >Cassandra一个节点到底应该存放多大数据

Cassandra一个节点到底应该存放多大数据

时间:2023-04-03 23:32:51浏览次数:37  
标签:用户 Azul 存放 内存 Cassandra 节点 垃圾

在Cassandra 2.x 版本及更早版本的时候,我经常建议用户单节点规模数据不要超过1T,到Cassandra 3.x 之后我又建议用户单节点规模不要超过4T。为什么会有这些变化,其实是跟基础设施的发展有关系的。一方面是随着SSD硬盘的越来越廉价,大部分用户使用SSD替换了机械硬盘提升了磁盘随机读写能力。但更重要的时,内存也变得廉价了,很多用户从之前单节点的32G内存升级到了128G,使得用户的JVM可以配置更大的堆。更大的堆意味着着可以存放更多的元数据,意味着可以存放更大的数据。

现在我们来分析下Cassandra 堆里面存放了什么信息。为了执行读取,Cassandra数据库在堆内存中维护以下组件:

1.Bloom filters

2.Partition summary

3.Partition key cache 

4.Compression offsets

5.SSTable index summary

5.SSTable meta info

此元数据驻留在内存中,也可以认为存放在堆内永久代,并与总数据成比例。一些组件与总内存的大小成比例地增长。除此之外,平时读写和压缩任务也会产生对象消耗堆内存。另外还有memtable(可配置中堆内或者堆外,4.x版本默认放在堆外) 和 Cache类(Key Cache,Row Cachhe)。

至此,我们基本分析出来,Cassandra的内存压力随着数据量的增大而增大。所以就有了上面的结论,32G的内存建议不超过1T,128G的内存建议不超过4T。那么问题来了,如果我有1T的内存是不是单节点容量可以达到32T呢?理论上是可以,但实际上会怎么样?实际上跟垃圾回收算法有关系,Cassandra 2.x的时候默认是CMS垃圾回收算法,一般建议堆最大不超过14G,因为超过14G,每次垃圾回收的时候性能下降,标记大量的对象导致GC暂停陡增。同样Cassandra 3.x 之后默认垃圾回收算法是G1,它一般建议最大堆不超过64G,如果超过这个值,GC暂停也是飙升到秒级以上,会严重影响业务。所以这个时候就算你有更大的内存,也会因为GC 暂停问题,不能配置足够大的堆来支撑更大的数据。

所以,我们建议用户根据内存及堆大小来评估单节点的最大容量。换算每TB数据需要消耗32G的内存。不过也有特例,如果使用时TWCS(时间窗压缩策略),因为每个sstable的生命周期只被Compact一次,后续不会参与Compact,通过又关闭读修复,所以会大大减少Compact时产生的对象,所以我建议用户在此类场景下,单节点数据量可以提高1倍。

尽管如此,不少用户还是希望单节点可以容纳更大的数据,由此降低硬件存储成本,实现纵向扩容的能力。特别是IOT领域的用户,半导体/电力/能源/物流/新能源汽车等,产生的数据量是特别巨大的,往往都是数十PB级别。于是这类客户往往选择商业的Azul Prime JDK来满足此类需求,Azul Prime的C4垃圾回收器不受堆大小敏感,在堆配置成TB级别,依然可以使垃圾回收暂停控制在毫秒级别。所以,如果使用Azul的JDK,可以不受64G堆大小的限制,从而配置成1T以上的堆(最大号称可以配置成8T),也就是单节点支撑32T(TWCS 64T)的数据,由此可以节省75%的节点数。当然我们也不建议用户配置更大的节点,因为数据量再上去扩容的时间会变得比较久。当然同样的原理试用于Hadoop namenode/es/solr等。


最后放个表格对比:

回收器

特点

Azul C4

适应各种场景,配置简单,高吞吐低延迟,GC停顿毫秒级,支持最大堆内存8TB。通过了Cassandra和DataTax认证,并进行了优化,以提高Cassandra的性能。单节点容量理论上不受限制,不过最好不超过32T。

G1

适应高吞吐优先,满足简单负载,配置简单。适合14G-32GB的堆大小。G1比CMS对更大的堆执行得更好,因为它首先扫描堆中包含最多垃圾对象的区域,并在运行时压缩堆,而CMS在执行垃圾收集时停止应用程序。单节点容量理论上不超过4T。

CMS

适应14G以下小的堆,优化参数非常多,得有时间和专业知识手动调整和测试。单节点容量理论上不超过1T。

ZGC

JDK17支持,JDK11上面目前实验性质,Cassandra还不适配


谢谢阅读!

如需Cassandra / Azul JDK 支持,加V:milk670661 备注:51CTO Cassandra

 








标签:用户,Azul,存放,内存,Cassandra,节点,垃圾
From: https://blog.51cto.com/u_15592740/6167727

相关文章

  • 1080. 根到叶路径上的不足节点
    题目描述给了一个二叉树,给了不足节点的定义(所有经过该节点的从跟到叶子的路径和如果都小于limt)需要删除所有的不足节点,返回最终的根节点f1分治+dfs基本分析从树上删除一个点,怎么操作方便?父节点删除比自己删除自己方便以上信息给了什么启示?dfs中给父节点返回自己可以删除的......
  • 019redis3.0集群删除节点
    1:如果删除的节点是主节点,这里我们删除192.168.2.20:7006节点,这个节点有1000个哈希槽首先要把节点中的哈希槽转移到其他节点中,执行下面的命令cd /usr/local/redis3.0/src./redis-trib.rb reshard 192.168.2.20:7000系统会提示我们要移动多少哈希槽,这里移动1000个,因为192.168.2.20......
  • 018redis3.0集群添加节点
    1:首先把需要添加的节点启动cd /usr/local/cluster/mkdir 7006cp /usr/local/cluster/redis.conf  /usr/local/cluster/7006/cd /usr/local/cluster/7006/vi redis.conf##修改redis.conf中的port参数的值为7006redis-server redis.conf2:执行以下命令,将这个新节点添加到集群......
  • Cassandra 数据模型
    Cassandra数据模型Cassandra的数据模型与我们通常在关系型数据库中看到的有很大不同。本文概述了Cassandra如何存储其数据。ClusterCassandra数据库分布在多台一起运行的机器上。最外面的容器称为集群。对于故障处理,每个节点都包含一个副本,如果发生故障,副本将负责。Cassa......
  • k8s work节点重新获取token
    在master节点重新生成token命令,然后在node子节点中执行kubuadmjoin命令kubeadmtokencreate--print-join-command如果网忘了证书的秘钥,可以在master节点执行以下命令opensslx509-pubkey-in/etc/kubernetes/pki/ca.crt|opensslrsa-pubin-outformder2>/dev/null......
  • 2096. 从二叉树一个节点到另一个节点每一步的方向
    题目描述给了一个二叉树,树上所有节点的值不同再给了两个点的值表示起点和终点,问从起点到终点的最短路的方向?f1dfs预处理+最近公共祖先基本分析没有给出起点和终点是哪个点,怎么拿到?一次从root的dfss到e的最短路径是哪一条?从公共祖先分别下来的怎么从s和e求到公共祖先的pat......
  • 力扣---面试题 02.01. 移除重复节点
    编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1,2,3,3,2,1]输出:[1,2,3]示例2:输入:[1,1,1,1,2]输出:[1,2]提示:链表长度在[0,20000]范围内。链表元素在[0,20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?来源:力扣(LeetC......
  • 新手如何使用Tiktok加速器做跨境电商?可以加速Tiktok网络的节点分享
    TikTok是一款全球性的视频应用程序,越来越多的跨境电商企业开始在TikTok上开展业务。然而,由于地理位置和网络原因,许多跨境电商企业在使用TikTok时会遇到卡顿、延迟等问题,影响了业务的正常运营。 为了解决这些问题,许多跨境电商企业开始使用TikTok加速器。那么,新手如何使用TikTok......
  • day16| 222.完全二叉树的节点个数
    104和111题见前一天 222.完全二叉树的节点个数 题目简述:给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层......
  • k8s kubernetes给node节点添加标签和删除node节点标签
    [root@k8s-master~]#hostname#查看节点名称k8s-master[root@k8s-master~]#[root@k8s-master~]#kubectlgetnodes--show-labels#查看节点标签NAMESTATUSROLESAGEVERSIONLABELSk8s-masterReadycontrol-plane9dv1.26.0......