Cassandra 不要从侧面裂开

Cassandra 不要从侧面裂开,cassandra,cassandra-2.1,Cassandra,Cassandra 2.1,由于sstables是不可变的,sstable拆分必须离线执行,即关闭节点。是否也可以脱机/在副业目录中拆分超大sstable的副本,同时保持节点联机,然后在短时间重新启动节点期间使用一组拆分的sstable文件交换极端sstable,以最小化节点停机时间 还是让一个节点退役,将数据分散到集群的其余部分,然后作为一个新的空节点重新加入会更好 有一些大的SSTABLE,短期内不会进入压缩视图。我想在另一个框中的另一个目录/FS/中拆分这样的脱机路径,即在运行节点时超出范围的位置,同时仍然让节点服务

由于sstables是不可变的,sstable拆分必须离线执行,即关闭节点。是否也可以脱机/在副业目录中拆分超大sstable的副本,同时保持节点联机,然后在短时间重新启动节点期间使用一组拆分的sstable文件交换极端sstable,以最小化节点停机时间

还是让一个节点退役,将数据分散到集群的其余部分,然后作为一个新的空节点重新加入会更好

有一些大的SSTABLE,短期内不会进入压缩视图。我想在另一个框中的另一个目录/FS/中拆分这样的脱机路径,即在运行节点时超出范围的位置,同时仍然让节点服务于原始sstable路径的冗余。似乎只有sstablesplit想要找到配置,或者它可能会被欺骗,从运行的节点进行分离访问

尝试对sstable文件的副本进行拆分,但:

on-a-offlinebox$sstablesplit--debug-s-SOME-VALUE-IN-MB mykeyspc mycf-*-Data.db 16:58:13.197[main]错误o.a.c.config.DatabaseDescriptor-致命 配置错误 org.apache.cassandra.exceptions.ConfigurationException:应为URI 在变量中:[cassandra.config]。请在文件前加上文件前缀:/// 对于本地文件或文件:///对于远程文件。流产。如果你 如果从外部工具执行此操作,则需要设置 Config.setClientMode(true)以避免加载配置。 位于org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:73) ~[apache-cassandra-2.1.15.jar:2.1.15] 位于org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:84) ~[apache-cassandra-2.1.15.jar:2.1.15] 位于org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161) ~[apache-cassandra-2.1.15.jar:2.1.15] 位于org.apache.cassandra.config.DatabaseDescriptor(DatabaseDescriptor.java:136) ~[apache-cassandra-2.1.15.jar:2.1.15] 位于org.apache.cassandra.tools.StandaloneSplitter.main(StandaloneSplitter.java:56) [apache-cassandra-2.1.15.jar:2.1.15]变量中应包含URI: [cassandra.config]。请使用file:///作为本地文件的前缀 文件或文件:///用于远程文件。流产。如果你是 从外部工具执行此操作时,需要设置 Config.setClientMode(true)以避免加载配置。致命的 配置错误;无法启动。有关stacktrace,请参阅日志


如果您能负担得起节点的停机时间,只需这样做(拆分表)。无论如何,如果要在另一台计算机/另一个目录上执行此拆分,则需要在重新加载sstables后在节点上运行修复(由于重建表的“脱机”时间)

您也可以尝试从节点中删除此表数据文件并运行修复,这可能会减少节点的停机时间:

停止节点->删除大表->启动节点->修复

编辑:自Cassandra 3.4以来,您可以在特定的sstables/文件上运行compact命令。在任何早期版本上,都可以使用ForceUserDefinedCompression jmx调用。您可以使用其中之一,也可以自己进行jmx调用:

jmxterm的示例代码:

sudo java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:7199

bean org.apache.cassandra.db:type=CompactionManager
run forceUserDefinedCompaction YourKeySpaceName_YourFileName.db

此外,如果“大表”问题一直发生,考虑迁移到LCS。< /P>我们想对这样大的SSTART进行压缩,我们期望有大量的墓碑来存放大量的数据。TSs是在30天前创建的,因此它们在默认的10天内早就过期了。不过,这类TSs需要很长一段时间才能被少数几个过多的大型SST表压缩。我们的应用程序供应商说,每晚运行大型compac,不要像我们依赖小型compac那样使用vnodes。TSed数据是否也会传播到decom上,还是只传播“实时数据”,即decom能否重新加入到单个节点的工作中,类似于大型compac?好吧,重建和退役都与压缩无关——它们只是流式传输数据。请查看我对答案的编辑。我的意思是,如果decom没有从大表中传输TS阴影数据,那么decom+重新加入后的效果可能类似于压缩TSed数据。单文件压缩只适用于相同的文件,如果保留了TTL过期数据,则需要重新考虑磁盘空间。我们还需要考虑其他SMELE表中的应用程序通用TSS。再次看到,AFAIK,退役将流式传输TSed数据,并且不会执行压缩。我在smallere表中看到三个选项w/TSs,将旧数据推送到一个大表中。1) 进行主要压缩(旨在将CF数据保存在一个[大]表中,2)装饰+重新连接(大量数据洗牌wo/VNode),3)离线和sstablesplit。1+2在操作过程中保持完全冗余,3不保持,1可能意味着继续定期进行主要压缩,否则我们很快就结束了类似的操作。应用程序供应商不推荐LCS,但STC+常规主要compac+无vnodes。我们在STCS+vnodes+上,由于负载太大,不喜欢主修。。。