2015-04-20 4 views
1

У меня есть тестовый кластер, я построил, и при взгляде на нее при запуске статуса nodetool у меня есть данные, распределенные среди четырех узлов, как например:нужно «баланс» Кассандра кластер

- адрес загрузка лексем Владеет

node3 ООН 1,61 ГБ 1 14,6%
NODE2 ООН 3.14 GB 1 19,4%
NODE1 ООН 7.68 GB 1 63,9%

В настоящее время все узлы были добавлены до I
NODE4 ООН 5,85 ГБ 1 2,0% проглатывается d ata в базу данных, но я думаю, что я, вероятно, напортачил, не вручную установив информацию о токенах до того, как ввел данные в кластер.

Мой вопрос в том, как лучше всего перенастроить это для более равномерного распределения данных?

ответ

3

Если вы не используете Vnodes (с которым у вас нет 1 токена на узел), вы можете перемещать маркеры на каждом узле, чтобы равномерно распределить ваше кольцо. Для этого выполните следующие действия:

  1. Рассчитайте токены, чтобы назначить свои узлы на основе количества узлов в вашем кластере. Вы можете использовать такой инструмент, как cassandra token calculator. С Murmur3Partitioner и 4 узлов можно использовать: (-9223372036854775808 -461168601842738790404611686018427387904)
  2. один узел в момент использования nodetool move для перемещения узла в новый маркер (т.е. nodetool move -- 0) и ждать его завершения. Это может занять некоторое время. Также может быть разумным выбрать, какие узлы переместиться на токен, основанный на их текущей близости к токену, к которому они переходят.
  3. Обычно это хорошая идея сделать nodetool cleanup на этом узле после того, как данные для очистки больше не принадлежат этому узлу.
1

+1 на очках Энди. Я хотел бы добавить еще одну вещь.

Для того, чтобы обеспечить точный объем владения%, необходимо указать ключевое слово Cassandra для nodetool status <ks>