Qual é a melhor maneira possível de se livrar dos grandes sstables (com centenas de GB de tamanho) criados pela compactação STCS.
Será sstablesplit
ou nodetool compact -s
?
Qual é a melhor maneira possível de se livrar dos grandes sstables (com centenas de GB de tamanho) criados pela compactação STCS.
Será sstablesplit
ou nodetool compact -s
?
SSTABLESPLIT é definitivamente o caminho a percorrer.
A compactação executada manualmente tende a causar mais problemas do que vale a pena.
Esses dois comandos executam operações diferentes e a "melhor maneira" depende do que você deseja alcançar.
sstablesplit
como o próprio nome sugere, dividirá SSTables em arquivos menores para que possam ser selecionados como candidatos à compactação porSizeTieredCompactionStrategy
. Observe, no entanto, que é uma ferramenta off-line , portanto, o Cassandra precisa ser desligado para executar a ferramenta.Como solução alternativa, você pode dividir grandes SSTables em outro servidor. Já documentei as etapas detalhadas em Como faço para dividir grandes SSTables em outro servidor? .
A opção "split" (
-s
ou--split-output
) fornodetool compact
forçará o que é chamado de compactação principal que dividirá SSTables em arquivos que são 50%, 25% e 12,5% do tamanho da tabela original até que o menor arquivo tenha 50 MB. Observe, no entanto, que esta opção está disponível apenas no Cassandra 2.2 ou versões posteriores.Há desvantagens em executar uma compactação manual que expliquei em Por que forçar uma compactação maior em uma mesa não é o ideal? então é algo para estar ciente.
Voltando à sua pergunta original, o que é "melhor" depende da sua situação e dependerá de você poder desativar um nó ou não. Espero que os pontos que levantei acima o ajudem a decidir. Saúde!