首页 文章

做sstablesplit一边

提问于
浏览
0

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

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

例如 . 有一些大的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 oacconfig.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] at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161)〜[apache-cassandra-2.1.15.jar :2.1.5] org.apache.cassandra.config.DatabaseDescriptor . (DatabaseDescriptor.java:136)〜[apache-cassandra-2.1.15.jar:2.1.15] at org.apache.cassandra.tools.StandaloneSplitter . main(StandaloneSplitter.java:56)[apache-cassandra-2.1.15.jar:2.1.15]期望变量中的URI:[cassandra.config] . 请在文件前面加上file:///表示本地文件,或者file:///表示远程文件 . 中止 . 如果从外部工具执行此操作,则需要设置Config.setClientMode(true)以避免加载配置 . 致命配置错误;无法开始 . 请参阅logtra for stacktrace .

1 回答

  • 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 .

相关问题