Кассандра: планирование мощностей
Я изучаю перемещение некоторых больших БД из MySQL в Cassandra и пытаюсь выяснить, как планировать кластер. Исторически сложилось так, что можно было бы просто купить диски для хранения соответствующих данных, но я не понимаю, как Кассандра использует дисковое пространство по сравнению с объемом оперативной памяти.
При планировании кластера встает вопрос о том, сколько машин, сколько дисков, оперативной памяти и т. Д. На одну машину. Как мне ответить на это за 1Тб? 10TB? Больше?
2 ответа
По сути, формула для диска на узел: D x RF / N x O / C с переменными, определенными ниже:
- D - ваш общий размер данных.
- RF ваш фактор репликации. Большинство кластеров используют по крайней мере 2 (для долговечности) или 3 (для комбинированной стойкости и доступности при CL = Quorum).
- N - количество узлов в вашем кластере. Это должно быть как минимум РФ. Вы также захотите увеличить это число, пока не добьетесь удобного результата "диск на узел".
- O - это множитель накладных расходов для индексов и непогруженных sstables на диске. Я бы использовал здесь как минимум коэффициент O=2, если у вас почти нет индексов и чрезвычайно стабильных данных.
- C - это фактор, который вы сохраните с поддержкой сжатия Cassandra 1.0+, если вы ее включите. Это будет примерно экономия, которую вы получите, распаковав файл с репрезентативным контентом. Используйте C=1, если сжатие отключено. Если при сжатии размер ваших данных уменьшается вдвое, попробуйте C=0,6 или около того, потому что сжатие используется не для всех (например, индексов).
После того, как вы получили несколько цифр, вы должны выбрать "диск на узел", который занимает не более 30% доступного локального хранилища, чтобы вам не приходилось сразу наращивать кластер, чтобы были возможны моментальные снимки.
Планирование памяти во многом зависит от того, как выглядит ваша схема, но вам понадобится как минимум 4 ГБ, выделенных для Cassandra на каждом узле. Операционная система сможет использовать что-либо кроме этого для очень выгодного кэширования диска. Больше памяти становится совершенно бесполезным, когда оно существенно превышает фактический объем данных, хранящихся на диске.
Планирование потенциала действительно наука (с точки зрения математики / статистики). Поскольку математические модели никуда вас не приведут, вам действительно нужно установить испытательный стенд, который можно использовать для ответа на ваши вопросы, поскольку никто здесь не может предоставить вам теоретическую модель, которую вы, похоже, просите.
Как ответить на это:
- Получить (масштабируемый) стенд
- Заполните его своими данными
- Напишите соответствующие инструменты генерации нагрузки
- Применить нагрузку и измерить
- Измерьте и запустите проверку работоспособности ваших результатов
- При желании настройте и, возможно, снова перейдите к 3. или 4.
или нанять профессионала.