Очистка Cassandra сразу на нескольких серверах

У нас есть большой кластер Cassandra 18 серверов (на одном сервере около 5T данных)

http://docs.datastax.com/en/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html — мы добавили новые узлы в соответствии с этой документацией.

После того, как мы добавили новые сервера, мы начали процесс очистки данных (nodetool cleanup)

В документации совет: после запуска всех новых узлов запустите очистку nodetool на каждом из ранее существующих узлов, чтобы удалить ключи, которые больше не принадлежат этим узлам. Дождитесь завершения очистки на одном узле, прежде чем делать следующий)

Но очистка одного сервера в нашем случае занимает около 2-3 дней. Мой вопрос, могу ли я начать очистку сразу на нескольких серверах, 2 или 3 ...

Или это может привести к потере данных?

Еще немного информации.

Мы используем cassandra 2.0.13 с vnodes. Также мы храним файлы в блонах в кассандре.

Коэффициент репликации = 3


person Anatoliy Laktionov    schedule 30.05.2015    source источник


Ответы (1)


Очистка не задействует другие узлы, поэтому ее можно безопасно запускать параллельно. Однако вы можете захотеть запустить сразу один, чтобы уменьшить влияние на производительность, поскольку очистка может использовать много дискового ввода-вывода.

person Richard    schedule 01.06.2015
comment
Для справки, Ричард прав, но в Cassandra 2.1 и выше есть еще одна проблема — очистка выполняется параллельно для всех sstables в CF, используя все компакторы. Сжатие на этом узле будет отставать, и, в зависимости от объема загрузки, у вас могут быть сотни или тысячи sstables на диске, что может значительно повлиять на производительность чтения. По этой причине запуск очистки на одном узле за раз может помочь поддерживать низкую задержку при чтении во время очистки. - person Jeff Jirsa; 18.01.2016