【发布时间】:2017-06-21 21:53:19
【问题描述】:
由于 sstable 是不可变的,并且 sstable 拆分必须离线执行,即。随着节点关闭。是否也可以离线/在副线目录中拆分超大 sstable 的副本,同时保持节点在线,然后在节点短暂重启期间将极端 sstable 与一组拆分的 sstable 文件交换,以最大程度地减少节点停机时间?
或者最好停用一个节点,将数据分散到集群的其余部分,然后作为新的空节点重新加入
例如。有一些大型 sstables 不会很快进入压缩视图。我想将这样的离线说拆分到另一个目录/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]。请在文件前加上 file:/// 用于本地文件或 file:/// 用于远程文件。中止。如果你 正在从外部工具执行此操作,它需要设置 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:/// 为本地 files 或 file:/// 用于远程文件。中止。如果你是 从外部工具执行此操作,它需要设置 Config.setClientMode(true) 避免加载配置。致命的 配置错误;无法启动。查看堆栈跟踪日志。
【问题讨论】: