Назад | Перейти на главную страницу

Cassandra - планирование оборудования

Вкратце: если у меня есть 5 ТБ данных и я хочу развернуть их на 5 серверах cassandra - нужно ли на каждой машине 5 ТБ дискового пространства для данных (не считая места для журнала)? Из документации кажется, что иногда кассандре потребуется вдвое больший размер данных - итого 10 ТБ на сервер или всего 10 ТБ в массиве?

Сколько оперативной памяти должно быть у каждой машины? Предположим, что все 5 ТБ находятся в одном пространстве столбцов. Я планировал максимально увеличить ОЗУ на каждой машине, но не уверен, что этого достаточно. Нужен ли мне массив серверов с общей оперативной памятью 5 ТБ?

Если вы равномерно распределите свои 5 ТБ данных на 5 серверах, на каждом сервере будет размещаться 1 ТБ данных. Из-за необходимости уплотнения каждому серверу потребуется 2 ТБ дискового пространства (в худшем случае для сжатия потребуется вдвое больше места на диске, чем у вас есть данных), что означает, что всего в вашем кластере 10 ТБ.

В приведенном выше случае вы храните только одну реплику ваших данных в кластере. В этом случае, если сервер выйдет из строя, пятая часть ваших данных будет недоступна. Если вы хотите сохранить 2 реплики ваших данных в кластере, каждому узлу потребуется 4 ТБ дискового пространства, что означает 20 ТБ всего в вашем кластере.

Предположим, что все данные находятся в ОЗУ, это огромная и дорогая машина. К счастью, в большинстве приложений вам не нужно хранить в памяти все данные, а нужно хранить только текущие / активные данные.

Cassandra может автоматически извлекать данные с HD в RAM, когда запись отсутствует в памяти. И наоборот, при отсутствии доступа запись из памяти удаляется («холодные» данные). Вы можете сравнить Cassandra как кеш уровня приложения, где записи представляют собой строки учетной записи. Попадания / промахи кэша в этом случае могут быть интерпретированы как записи на диске файловой системы cassandra, которые необходимо вернуть в память.

Итак, что касается размеров:

  • Размер жесткого диска рассчитан на общий набор данных
  • Размер ОЗУ рассчитан таким образом, чтобы уменьшить "промахи в кэше"
  • Фактор репликации влияет на пропускную способность и отказоустойчивость

Итак, говоря об оперативной памяти: вам нужно только хранить достаточно данных в памяти, чтобы избежать ненужного повторного выбора с диска. Это очень зависит от приложения. Я бы предложил провести сравнительный анализ, чтобы проверить, сколько активных сеансов вы получаете в день по отношению к общему количеству сеансов, которые вы сохранили в системе. Это хорошо применимо, если в вашей системе преобладает чтение, а чтение демонстрирует временную локальность.

Проверьте также эту ветку для дальнейшего вдохновения https://stackoverflow.com/questions/4924978/cache-design-question

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

Предлагаемое cassandra дисковое пространство на узел для обеспечения производительности составляет 1/2 терабайта, поэтому, если вы не хотите ждать очень долгого сжатия и очень долгого времени отображения / сокращения, вам следует переосмыслить, сколько машин необходимо.