Стратегия выравнивания уплотнения при нехватке места на диске

У нас есть серверы Cassandra 1.1.1 со стратегией выравнивания уплотнения.

Система работает так, что есть операции чтения и удаления. Каждые полгода мы удаляем примерно половину данных при поступлении новых данных. Иногда бывает, что использование диска достигает 75%, хотя мы знаем, что реальные данные занимают около 40-50%, остальное пространство занято надгробиями. Чтобы избежать переполнения диска, мы принудительно уплотняем наши таблицы, понижая все SSTables до уровня 0. Для этого мы удаляем файл манифеста .json и перезапускаем узел Cassandra. (опция gc_grace не помогает, так как уплотнение начинается только после заполнения уровня)

Начиная с Cassandra 2.0 файл манифеста был перемещен в сам файл sstable: https://issues.apache.org/jira/browse/CASSANDRA-4872.

Мы рассматриваем возможность перехода на Cassandra 2.x, но опасаемся, что у нас больше не будет такой возможности, как принудительное выравнивание уплотнения.

Мой вопрос: как мы можем добиться, чтобы наша таблица имела ограничение на дисковое пространство, например. 150 ГБ? (При превышении лимита уплотнение запускается автоматически). Вопрос в основном по Cassandra 2.x. Хотя любые альтернативные решения для Cassandra 1.1.1 также приветствуются.


person Maxim Zakharenkov    schedule 22.04.2015    source источник


Ответы (1)


Кажется, я сам нашел ответы.

  • Начиная с версии 2.x существует инструмент sstablelevelreset, который выполняет сброс уровня, аналогичный удалению файла манифеста. Инструмент находится в каталоге инструментов дистрибутива Cassandra, например. apache-cassandra-2.1.2 / инструменты / bin / sstablelevelreset.

  • Начиная с Cassandra 1.2 (https://issues.apache.org/jira/browse/CASSANDRA-4234) есть поддержка удаления надгробных камней для стратегии выравнивания уплотнения, которая поддерживает параметр tombstone_threshold. Это дает возможность установить максимальное соотношение надгробий в таблице.

person Maxim Zakharenkov    schedule 23.04.2015
comment
Также стоит отметить, что вы по-прежнему можете принудительно выполнять сжатие на уровне отдельных файлов с помощью JMX (encql.com/purge -cassandra-tombstones поддерживает 1.2, 2.0, 2.1) - даже если данная стабильная конструкция не будет выбрана для уплотнения стратегией уплотнения cassandra, вы можете вручную принудительно уплотнить ее, и надгробия будут очищены, если они являются GC -способный. - person Jeff Jirsa; 26.04.2015