Cassandraドキュメント

バージョン

プレリリース版のドキュメントをご覧になっています。

sstableofflinerelevel

LeveledCompactionStrategyを使用する場合、最近ブートストラップされたノードでSSTableがL0でスタックし、コンパクションが追いつかないことがあります。このツールは、SSTableを可能な限り最高のレベルに引き上げるために使用されます。

これは次のように行われます。SSTableは最後のトークンでソートされます。次のような元のレベリングがあるとします([]はトークンの境界を示し、ディスク上のSSTableのサイズを示すものではありません。すべてのSSTableは同じサイズです)

L3 [][][][][][][][][][][]
L2 [    ][    ][    ][  ]
L1 [          ][        ]
L0 [                    ]

L0にドロップされ、最後のトークンでソートされた後は、次のようになります(重複を示すために、重複するものは新しい行に配置されます)

[][][]
[    ][][][]
    [    ]
[          ]
...

次に、最小の最終トークンから反復処理を開始し、重複が発生しないすべてのSSTableをレベルに追加します。元のレベリングをトップダウンで再構築します。SSTableをレベルに追加するたびに、ソート済みリストから削除します。ソート済みリストの最後に到達すると、完全なレベルになり、下のレベルからやり直すことができます。

予想よりも多くのレベルになった場合は、予想を超えるすべてのレベルをL0に配置します。たとえば、元のL0ファイルは、多くの場合、他の多くのSSTableと重複するため、独自のレベルに配置されることがよくあります。

このツールを実行する前にCassandraを停止する必要があります。そうしないと、予期しない結果が発生します。注: スクリプトはCassandraが停止していることを確認しません。

使用方法

sstableofflinerelevel [--dry-run] <キースペース> <テーブル>

ドライランの実行

--dry-runオプションを使用して、現在のレベル分布と変更後の予測レベルを確認します。

sstableofflinerelevel --dry-run keyspace eventlog
For sstables in /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753:
Current leveling:
L0=2
Potential leveling:
L0=1
L1=1

再レベルの実行

sstableofflinerelevel keyspace eventlog
For sstables in /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753:
Current leveling:
L0=2
New leveling:
L0=1
L1=1

キースペースまたはテーブルが見つかりません

無効なキースペースまたはテーブルが指定された場合、例外がスローされます。

sstableofflinerelevel --dry-run keyspace evenlog

Exception in thread "main" java.lang.IllegalArgumentException: Unknown keyspace/columnFamily keyspace1.evenlog
    at org.apache.cassandra.tools.SSTableOfflineRelevel.main(SSTableOfflineRelevel.java:96)