Подтвердить что ты не робот

Каковы различия между node, кластером и центром обработки данных в базе данных nosql cassandra?

Я пытаюсь дублировать данные в базе данных nosql cassandra для школьного проекта, используя центр datastax ops. Из того, что я прочитал, есть три ключевых слова: кластер, node и датацентр, и из того, что я понял, данные в node могут быть дублированы в другом node, который существует в другом кластере. И все узлы, которые содержат одни и те же (дублированные) данные, составляют центр обработки данных. Правильно ли это?

Если это не так, в чем разница?

4b9b3361

Ответ 1

Иерархия элементов в Кассандре:

  • Кластер
    • Центр обработки данных (ы)
      • стойки (ы)
        • Сервер (ы)
          • Node (точнее, vnode)

Кластер представляет собой набор центров обработки данных.

Центр данных представляет собой набор стоек.

A Rack - это набор серверов.

Сервер по умолчанию содержит 256 виртуальных узлов (или vnodes).

Vnode - это уровень хранения данных на сервере.

Примечание. Сервер - это программное обеспечение Cassandra. Сервер установлен на компьютере, где машина является либо физическим сервером, либо экземпляром EC2, либо подобным.

Теперь специально рассмотрим ваши вопросы.

Отдельная единица данных называется разделом. И да, разделы реплицируются на нескольких узлах. Каждая копия раздела называется репликой.

В кластере центров данных с несколькими данными репликация выполняется на центр обработки данных. Например, если у вас есть центр обработки данных в Сан-Франциско, названный dc-sf, а другой в Нью-Йорке по имени dc-ny, то вы можете контролировать количество реплик в каждом центре обработки данных.

В качестве примера вы можете установить dc-sf, чтобы иметь 3 реплики и dc-ny, чтобы иметь 2 реплики.

Эти числа называются фактором репликации. Вы бы конкретно сказали, что dc-sf имеет коэффициент репликации 3, а dc-ny имеет коэффициент репликации 2. Простыми словами, dc-sf будет иметь 3 копии данных, распространяемых по трем vnodes, тогда как dc-sf будет иметь 2 копии данных, распространяемых по двум vnodes.

Пока каждый сервер имеет 256 vnodes по умолчанию, Cassandra достаточно умен, чтобы выбирать vnodes, которые существуют на разных физических серверах.

Подводя итог:

  • Данные реплицируются на нескольких виртуальных узлах (каждый сервер содержит по умолчанию 256 vnodes)
  • Каждая копия данных называется репликой
  • Единица данных называется разделом
  • Репликация контролируется в центре обработки данных

Ответ 2

A node - это единственная машина, которая запускает Cassandra. Набор узлов, содержащих аналогичные данные, сгруппирован в так называемое "кольцо" или кластер.

Иногда, если у вас много данных или вы обслуживаете данные в разных географических зонах, имеет смысл группировать узлы вашего кластера в разные центры обработки данных. Хорошим вариантом для этого является веб-сайт электронной коммерции, который может иметь много частых клиентов на восточном побережье и на западном побережье. Таким образом, ваши клиенты на восточном побережье подключаются к вашему восточному побережью DC (для повышения производительности), но в конечном итоге имеют доступ к одному набору данных (оба DC находятся в одном кластере), как клиенты западного побережья.

Дополнительную информацию об этом можно найти здесь: Об Apache Cassandra - Как работает Cassandra?

И все узлы, которые содержат одни и те же (дублированные) данные, составляют центр обработки данных. Правильно ли это?

Закрыть, но не обязательно. Уровень дублирования данных определяется вашим коэффициентом репликации, который устанавливается на основе каждого ключа. Например, скажем, что у меня есть 3 узла в моем единственном DC, все хранящие 600 ГБ данных о продукте. Мое определение пространства ключей products может выглядеть следующим образом:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '3'};

Это гарантирует, что данные моего продукта будут одинаково реплицированы на все 3 узла. Размер моего общего набора данных составляет 600 ГБ, дублируется на всех трех узлах.

Но позвольте сказать, что мы развертываем новую довольно крупную линейку продуктов, и я полагаю, что у нас будет еще 300 ГБ данных, которые могут начать нажимать максимальную емкость наших жестких дисков. Если мы не можем сейчас обновлять все наши жесткие диски, я могу изменить коэффициент репликации следующим образом:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '2'};

Это создаст 2 копии всех наших данных и сохранит их в нашем нынешнем кластере из 3 узлов. Размер нашего набора данных теперь составляет 900 ГБ, но поскольку их всего две копии (каждый node отвечает за 2/3 данных), наш размер на диске по-прежнему составляет 600 ГБ. Недостатком здесь является то, что (при условии, что я читаю и пишу на уровне согласованности ONE), я могу позволить себе потерпеть потерю 1 node. В то время как с 3 узлами и RF 3 (снова чтение и запись при согласованности ONE), я могу потерять 2 узла и все еще выполнять запросы.

Ответ 3

Node:

Машина, которая хранит часть вашей всей базы данных. Это может включать репликации данных из другого node, а также собственные данные. Какие данные он отвечает, определяется его диапазонами токенов и стратегией репликации пространства ключей, в котором хранятся данные.

Datacenter:

Логическая группировка узлов, которые могут быть отделены от других узлов. Общим вариантом использования является AWS-EAST против AWS-WEST. Репликация NetworkTopologyStrategy используется для определения того, сколько реплик всего пространства ключей должно существовать в любом данном центре данных. Это то, как пользователи Cassandra достигают кросс-репликации. Кроме того, они представляют собой политики уровня согласованности, которые требуют подтверждения только в центре данных координатора (LOCAL_*)

Кластер

Общая сумма всех машин в вашей базе данных, включая все датацентры. Нет репликации кросс-кластеров.