Невозможно добавить узлы в существующий кластер Cassandra

У нас есть кластер кассандры из 6 узлов на EC2, мы должны удвоить его емкость до 12 узлов. Таким образом, чтобы добавить еще 6 узлов, я выполнил следующие шаги.

1 Вычислили токены для 12 узлов и настроили новые узлы соответственно.

2 При правильной настройке запускаются новые узлы, чтобы новые узлы разделяли существующие диапазоны токенов.

  • В начале все новые узлы показывали текущую потоковую передачу.
  • В состоянии вызова все узлы находились в состоянии "Соединение"
  • Через 12 часов 2 узла завершили потоковую передачу и пришли в нормальное состояние.
  • Но на оставшихся 4 узлах после потоковой передачи некоторого количества данных они не показывают никакого прогресса, похоже, что они застряли

Мы установили Cassandra-0.8.2 и имеем около 500 ГБ данных на каждом из существующих узлов и храним данные на томе EBS.

Как я могу решить эту проблему и получить сбалансированный кластер из 12 узлов?

Могу ли я перезапустить узлы?

Если я почистил каталог данных застрявших узлов Cassandra и перезапустил новую установку, это приведет к потере данных?

3 ответа

Решение

Не будет потери данных, если вы используете коэффициент репликации 2 или выше.

В версии 0.8.2 Cassandra есть несколько известных проблем - пожалуйста, обновите до 0.8.8 на всех исходных узлах, а также на новых появившихся узлах, а затем начните процедуру для узлов, которые не завершились.

Также помните, что хранение данных на томах EBS - плохая идея:

http://www.mail-archive.com/user@cassandra.apache.org/msg11022.html

Хотя это не даст прямого ответа на ваш вопрос, надеюсь, оно направит вас в правильном направлении:

Есть довольно активный #cassandra IRC канал включен freenode.org,

Так вот ответ, почему некоторые из наших узлов застряли.

1) Мы обновили cassandra-0.7.2 до cassandra0.8.2

2) И мы загружаем sstables утилитой sstable-loader

3) Но некоторые данные для некоторых семейств столбцов напрямую вставляются из задания hadoop. И данные этих семейств столбцов показывают какую-то другую версию, так как мы не обновили API Cassandra в Hadoop.

4) Из-за несоответствия версий Кассандра выдает "исключение несоответствия версий" и прекращает потоковую передачу.

5) Таким образом, решение для этого состоит в том, чтобы использовать "nodetool scrub keyspace columnfamily". Я использовал это, и моя проблема решена

Таким образом, главное здесь, если вы обновляете емкость кластера cassandra, вы должны выполнить scruit nodetool

Другие вопросы по тегам