2017-02-04 12 views
0

sstablesは不変で、sstableはオフラインで実行する必要があります。ノードをシャットダウンします。極端な大規模なスナップショットのコピーをオフラインで/副次的なディレクトリに分割することも可能ではないでしょうか?ノードをオンラインにしてからノードの短時間の再起動中に分割されたsstableファイルをスワップした後、ノードのダウンタイム?サイドでsstablesplitを実行します

それとも、クラスタの残りの部分を介してデータを拡散、ノードの使用を停止してから、新しい空のノード

例:として再加入する方が良いだろう。まもなくいつでもコンパクションビューに入らない大きなステルブルを持っています。このようなオフラインの言葉を、別のディレクトリ/ FS /別のボックスに分割したいと思います。ただし、元のsstableパスから冗長性を保守しているノードを実行している間に、それはsstablesplitが設定を見つけたいと思っているだけです。そうでなければ、実行中のノードからスプリット・アウト・リーチを行うようにすることができますか?

それを分割するsstableファイルのコピーにしようとしたが、:

に-offlinebox $ sstablesplit --debug -s SOME-VALUE-IN-MB-mykeyspc mycf - * - データ.db 16:58:13.197 [main]エラーoacconfig.DatabaseDescriptor - 致命的 構成エラー org.apache.cassandra.exceptions.ConfigurationException:URI: が変数:[cassandra.config]に存在することを予期しています。ローカルファイルの場合はfile:/// 、リモートファイルの場合はfile:///の接頭辞を付けてください。中止する。外部ツールから を実行している場合は、コンフィグレーションのロードを避けるために、 Config.setClientMode(true)を設定する必要があります。 org.apache.cassandra.config.YamlConfigurationLoader.loadConfigで :org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:73) 〜[2.1.15のApache-カサンドラ-2.1.15.jar]で (YamlConfigurationLoader.java:84) 〜[apache-cassandra-2.1.15.jar:2.1.15] at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161) 〜[apache-cassandra (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] variaのURIが必要ですble: [cassandra.config]。ローカル ファイルの場合はfile:///の接頭辞を付け、リモートファイルの場合はfile:///を付けます。中止する。外部ツールから を実行する場合は、コンフィグレーションのロードを避けるために、 Config.setClientMode(true)を設定する必要があります。致命的な 構成エラー。始められない。 「stacktraceのログ」を参照してください。

答えて

0

ノードのダウンタイムを許すことができれば、それを実行してください(テーブルを分割する)。とにかく、別のマシン/別のディレクトリでこの分割を実行する場合は、sstablesをリロードした後にノードで修復を実行する必要があります(再構築されたテーブルの「オフライン」時間のため)。

あなたはまた、あなたのノードと実行中の修理からこのテーブルのデータファイルをドロップしようとすることができ、それはノードのために、おそらく最小限のダウンタイムになります:

停止ノード - >ビッグsstablesを削除 - >ノードを起動 - >修復。

編集:Cassandra 3.4以降、特定のsstables /ファイルに対してcompactコマンドを実行できます。以前のバージョンでは、forceUserDefinedCompaction jmx callを使用できます。あなたはこれらのいずれかを使用するか、自分で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に移行することを検討してください。

+0

このような大規模なスティスタブルで圧縮を行う理由は、大規模なステーブルに存在するかなりのデータに対して多くのトゥボーンが存在することが予想されるためです。 TSは+ 30日前に作成されたので、デフォルトの10日間でgc_graceを長く延期しています。そのようなTSが過度の数の大きすぎる大きな握り手に対して圧迫されるまでには、長い時間がかかるだけです。私たちのApp Vendorは、毎晩大きなcompacを実行し、私たちが軽いcompacsに頼っているようにvnodeを使用しないと言います。 TSedデータは、分解されたデータまたは「生データ」のみにも拡散されますか?個々のノードの主要なコンパックに似た、分解と再結合の作業は可能でしょうか? –

+0

AFAIKは、再構築と廃止のどちらも圧縮とは関係なく、データをストリームします。私の回答を編集してください。 – nevsv

+0

私は、もしdecomが大きなテーブルからTSシャドーデータをストリーミングしなかったならば、decom + rejoin後の効果はTSedデータを圧縮することと似ていることを意味しました。単一ファイルの圧縮は、同じファイルがTTL期限切れのデータを保持していればディスクスペースを再利用する場合にのみ有効です。App Genereated TSを他のテーブルから削除する必要があります。 http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html –

関連する問題