在旁边进行sstablesplit

时间:2017-02-04 16:25:34

标签: cassandra cassandra-2.1

由于sstables是不可变的,sstable split必须离线执行,即。节点关闭。也不可能离线/在边线目录中拆分极大sstables的副本,同时保持一个节点在线然后在一个节点的短暂重启期间用一组分裂的sstable文件交换极端sstables以最小化节点停机时间?

或者最好是停用一个节点,在其余的集群上传播数据,然后重新加入一个新的空节点

EG。有一些大型的sstables,它们很快就会进入压缩视图。我想在另一个目录/ FS /另一个盒子上拆分这样的脱机说法,只是在运行节点的范围之外,同时仍然让节点从原始sstable路径服务冗余。只有它似乎sstablesplit想要找到配置或者是否可以被欺骗,否则从运行节点分离出来?

尝试使用sstable文件的副本进行拆分,但是:

  

on-a-offlinebox $ sstablesplit --debug -s SOME-VALUE-IN-MB mykeyspc-mycf - * - Data.db 16:58:13.197 [main] ERROR o.a.c.config.DatabaseDescriptor - Fatal   配置错误   org.apache.cassandra.exceptions.ConfigurationException:期望URI   在变量中:[cassandra.config]。请在文件前加上file:///   对于本地文件或文件:///用于远程文件。中止。如果你   正在从外部工具执行此操作,需要进行设置   Config.setClientMode(true)以避免加载配置。           在org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:73)   〜[Apache的卡桑德拉-2.1.15.jar:2.1.15]           在org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:84)   〜[Apache的卡桑德拉-2.1.15.jar:2.1.15]           在org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161)   〜[Apache的卡桑德拉-2.1.15.jar:2.1.15]           在org.apache.cassandra.config.DatabaseDescriptor。(DatabaseDescriptor.java:136)   〜[Apache的卡桑德拉-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:/// for local   文件或文件:///用于远程文件。中止。如果你是   从外部工具执行此操作,需要进行设置   Config.setClientMode(true)以避免加载配置。致命   配置错误;无法开始。请参阅logtra for stacktrace。

1 个答案:

答案 0 :(得分:0)

如果您可以为节点承担停机时间,只需执行此操作(拆分表)。无论如何,如果你要在另一台机器/另一个机器上执行此拆分,则需要在重新加载sstables后在节点上运行修复(由于重建表的“离线”时间)。

您还可以尝试从节点中删除此表数据文件并运行修复,节点的停机时间可能最短:

停止节点 - >删除大sstables - >启动节点 - >维修。

编辑:从Cassandra 3.4开始,您可以对特定的sstables /文件运行compact命令。在任何早期版本中,您都可以使用forceUserDefinedCompaction jmx调用。您可以使用其中一种,或自己进行jmx调用:

http://wiki.cyclopsgroup.org/jmxterm/manual.html

https://github.com/hancockks/cassandra-compact-cf

https://gist.github.com/jeromatron/e238e5795b3e79866b83

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。