我有一个5节点的集群,大约有1TB的数据。启用Vnodes。 Ops Center版本5.12和DSE 4.6.7。我想在10天内进行全面维修,并在Ops Center使用维修服务,这样我就不会在集群上施加不必要的负担。
我面临的问题是维修服务负担过重,工作速度太快。它在24小时内进步约30%(根据Ops中心)。我甚至试图将它改为40天没有任何区别。
问题,
答案 0 :(得分:0)
#壳> nodetool status
状态=上/下| /状态=正常/离开/加入/移动 - 地址加载令牌拥有主机ID机架UN 10.xxx.xxx.xx 43.95 GB 256 33.3% b1e56789-8a5f-48b0-9b76-e0ed451754d4 RAC1
您使用什么类型的压缩?
你问了一个'魔术子弹'问题,因为可能有几个因素在起作用。这些是示例,但不限于:
一个。数据的大小以及Cassandra中的整行(您可以使用nodetool cf_stats table_size条目查看这些行)。导致二进制大小超过16M的行将被视为“超”宽行,这可能表示您的数据模型中的模式需要“复合”或“复合”行键。
B中。您对复制和网络策略的设置类型。
℃。数据录入点,Cassandra如何获取数据。你在用Python吗? PHP?什么输入数据?您可以从具有错误PHP驱动程序的集群中获得时髦的行为(例如)
d。 Vnodes很好,但可能很糟糕。您正在运行什么版本的Cassandra?你可以通过CQLSH找到cqlsh -3然后输入'show version'
电子。压实类型是一个很大的杀手。您使用的是SizeTieredCompaction还是LevelCompaction?
首先从运行任何给定节点的服务器上的命令行运行'nodetool cfstats'。感兴趣的特定领域(此时)
压缩行最小尺寸: 压缩行最大尺寸:
在具有Y量RAM的系统上,此处大小超过X个字节的数量可能是一个重要问题。确保Cassandra有足够的RAM并且堆栈已经调整。
Cassandra上的性能默认配置通常应该足够,因此下一步是使用'cqlsh -3 hostname'打开到节点的CQLSH接口,并发出命令'describe keyspaces'。获取正在运行的已知密钥空间名称,并发出“describe keyspace FOO”并查看您的模式。特别感兴趣的是你的主要钥匙。您使用“复合行键”还是“复合主键”? (如下所述:http://www.datastax.com/dev/blog/whats-new-in-cql-3-0)如果没有,您可能需要依赖于预期的读/写负载。
还要检查初始应用程序层如何将数据插入Cassandra?用PHP?蟒蛇?正在使用哪些驱动程序? Cassandra版本中存在重大错误< 1.2.10使用某些Thrift连接器,例如Java驱动程序或PHPcassa驱动程序,因此您可能需要升级Cassandra并进行一些驱动程序更改。
除了这些步骤之外,还要考虑如何创建节点。 请注意,必须减少从静态节点到虚拟节点(或vnode)的迁移。您不能简单地在已填充的节点上切换配置。您需要检查/etc/cassandra/cassandra.yaml中的initial_token:设置。我在这里问自己的问题是“设置了什么初始令牌?(没有vnodes的初始令牌)是在填充数据后更改了令牌?”对于我通常运行的静态节点,我使用类似的工具计算它们:[http://www.geroba.com/cassandra/cassandra-token-calculator/]因为我遇到了与vnodes的复杂问题(尽管它们现在比以前更加可靠)。