2016-02-21 5 views
1

Допустим, у меня есть кластер cassandra (DSE) и приложение, которое динамически создает кластеры и таблицы (это фактически бизнес-пример, который у нас есть).Может ли Cassandra воспользоваться огромной памятью (ОЗУ)

Сообщается, что Cassandra резервирует 1 МБ памяти для каждой таблицы в памяти. Клавиши на самом деле не занимают места, но если таблицы добавляются динамически, в конечном итоге вся память будет «зарезервирована» для всех этих таблиц. Я предполагаю, что нужно создать много таблиц, но для этого вопроса давайте предположим, что таблицы добавлены, чтобы «съесть» память. Итак, чтобы решить проблему, я мог бы добавить больше памяти (ОЗУ), или это не поможет?

Как Cassandra будет использовать память, если будет добавлено больше? Например. позволяет предположить, что я собираюсь в крайнем случае и иметь узлы в моем кластере с 244 ГБ оперативной памяти (пример AWS i2.8xlarge), поможет ли это мне добавить в кластер больше таблиц?

Возможно ли, что Cassandra может использовать дополнительную ОЗУ?

ответ

2

приложение, которое динамически создает keyspaces и таблицы (это на самом деле бизнес случае мы имеем)

Вы столкнетесь с множеством проблем. Зачем ?

  • потому Cassandra не был разработан, чтобы добавить новые таблицы непрерывно на лету
  • , потому что создание схемы и соглашения между узлами кластера занимает много времени, и вы должны быть абсолютно уверены в том, что таблица была , созданный до его написания, поэтому это означает, что вам нужно проверить приложение , что соглашение об успешной схеме. Прочитайте это: http://datastax.github.io/java-driver/manual/metadata/#schema-agreement
  • , потому что вы можете столкнуться большие неприятности и уничтожить ваш кластер когда масштабирования и имеющую динамическое создание схемы с помощью приложения (, если вы не остановить полностью эту функцию динамического создания схемы при масштабировании , что может оказаться невозможным). Прочитайте это для более подробной информации: http://www.slideshare.net/doanduyhai/cassandra-nice-use-cases-and-worst-anti-patterns-no-sqlmatters-barcelona/44

Хотя это было интересно читать это не отвечает на мой вопрос. Предположим, что у меня есть контроль над созданием кластеров и таблиц, возвращаясь к исходному вопросу, является ли Cassandra использовать добавленную RAM?

Да это, я бы посоветовал, для огромного сценария RAM, чтобы установить размер виртуальной машины Java Heap к чему-то огромным, как 128Гб и использовать G1 GC

+0

Хотя это было интересно читать это не отвечает на мой вопрос. Предположим, что у меня есть контроль над созданием кластеров и таблиц, возвращаясь к исходному вопросу, является ли Cassandra использовать добавленную RAM? – nicgul

+0

Cassandra может использовать ОЗУ с использованием кеша кеша кеша/кеша, но в реальности используется кеш-страница ОС. Если у вас 244 ГБ ОЗУ, использование кучи разумного размера и остальная часть ОЗУ для кэша ОС обычно будет лучше. В некоторых случаях использование очень большой кучи и G1 (как предложено @doanduyahi) будет хорошим, но часто вы просто переходите от кеширования ОС/ядра к кешированию JVM, что не всегда выигрывает. –