Выбор конфигурации серверов для Apache Cassandra

14 Июн
2012

У меня достаточно часто спрашивают, какую конфигурацию железа нужно использовать для развертывания Apache Cassandra. Последний мой ответ был достаточно развернут, что-бы поделиться со всеми интересующимися сразу.

Объем данных


Общее правило не держать более ~0.5 ТБ данных на одном узле.
Т.е. лучше иметь больше мелких узлов, чем меньше крупных.
Причина не в том, что кассандра не справится, а в том, что служебные функции (такие, как repair, decomission, move) начинают достаточно долго работать (дни).

Память


Дальше, как и для любой базы данных, становится вопрос, влазит ли working set в память. Если влазит, или может влазить — желательно увеличивать память до уровня «что-бы влазило». Минимум ~0.5% от объема данных, т.е. 5GB java heap на терабайт данных узла. Меньше уже начинает не хватать просто на работу, не говоря уже о кешах.

Диски


Если working set в память таки не влазит, думайте о количестве дисков. Как известно, средний диск умеет 100-200 операций чтения в секунду (произвольный доступ), независимо от объема. Так что лучше больше мелких дисков.
Также помагает правильное пранирование схемы данных, что-бы уменьшить количество операций. Запись построена в кассандре таким образом, что рандомных запросов не создает, поэтому является очень быстрой.
По поводу отдельного диска для логов — это, как ни странно, зависит от файловой системы (логики кеширования, fsync). Зачастую быстрее вариант с включением диска (дисков) в общий рейд и создания отдельного раздела для логов. Основная проблема — система должна «отличать» логи от данных, т.к. к ним применяется совершенно различная схема доступа. Так, например, логи write-only. Рекомендую протестировать оба варианта.

Процессор


Кассандра многопоточна и не очень требовательна к CPU. Замечу, что мы говорим о серверах, поэтому однопроцессорная 4х ядерная система для меня это low level. Этого low level должно хватить с головой.

Сеть


Задумайтесь о сети. 1Gb между стойками не хватает! Если есть возможность — дайте 10Gb между серверами. Это позволит сначительно ускорить служебные операции (например добавление новых серверов в кольцо).
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх