Очевидно, что есть два типа памяти - диск и оперативная память.Я предполагаю, что вы говорите о дисковом пространстве.
Во-первых, вы должны выяснить, сколько места вы в настоящее время используете на узел.Проверьте использование на диске диска cassandra data dir (по умолчанию /var/lib/cassandra/data
) с помощью этой команды: du -ch /var/lib/cassandra/data
Затем вы должны сравнить это с размером вашего диска, который можно найти с помощью df -h
.Учитывайте только запись для результатов df
для диска, на котором находятся данные вашей кассандры, проверив столбец Монтировано на.
Используя эту статистику, вы сможете рассчитать, насколько полно в% раздел данных кассандры.,Обычно вы не хотите приближаться к 100%, потому что обычные процессы уплотнения cassandra временно используют больше дискового пространства.Если вам не хватает, то узел может быть пойман с полным диском, который может быть болезненным для решения (как я отмечаю, я иногда сохраняю «балластный» файл нескольких гигабайт, который я могу удалить на всякий случай, если янужно открыть дополнительное пространство).Как правило, я обнаружил, что безопасное использование диска в диапазоне 0,8 не более 70%.
Если вы используете более новую версию cassandra, то я бы рекомендовал использовать стратегию Leveled Compactionвыстрел, чтобы уменьшить временное использование диска.Вместо того, чтобы потенциально использовать вдвое больше дискового пространства, новая стратегия будет максимально использовать 10x небольшого фиксированного размера (5 МБ по умолчанию).
Вы можете прочитать больше о том, как сжатие временно увеличивает использование диска на этом превосходномсообщение в блоге от Datastax: http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra В нем также объясняются стратегии уплотнения.
Итак, для небольшого планирования емкости вы можете определить, сколько еще места вам понадобится.С коэффициентом репликации 3 (что вы используете выше) добавление 20-30 ГБ необработанных данных добавит 60-90 ГБ после репликации.Разделите между своими 9 узлами, это может быть 3GB больше на узел.Прибавляет ли добавление такого вида использования диска на узел слишком близко к наличию полных дисков?Если это так, вы можете рассмотреть возможность добавления большего количества узлов в кластер.
Еще одно замечание: загрузка ваших узлов не очень равномерная - от 2 ГБ до 7 ГБ.Если вы используете ByteOrderPartitioner поверх случайного, это может вызвать неравномерную загрузку и «горячие точки» в вашем кольце.Вы должны рассмотреть возможность использования случайных, если это возможно.Другая возможность может заключаться в том, что у вас есть дополнительные данные, о которых нужно позаботиться (на ум приходят хинты и снимки).Попробуйте очистить его, запустив nodetool repair
и nodetool cleanup
на каждом узле по одному (обязательно прочитайте, что они делают в первую очередь!).
Надеюсь, это поможет.