Проблема Кассандры и Гектора

Я установил Cassandra на 1 узел и залил его данными. Затем я настроил второй узел, его начальный токен, начальное число и т. Д. И запустил на нем Cassandra. Теперь, когда я запустил свой код Hector на кластере с 1 узлом, он предоставил мне все данные. Но когда я запускаю тот же код в кластере из 2 узлов, я получаю меньше данных (меньшее количество столбцов и строк). Я не понимаю, что делаю неправильно. Я даже попытался добавить строку хостов с помощью CassandraHostConfigurator, но все равно не получаю все данные. Я также попытался запустить ремонт nodetool, но все еще сталкивался с той же проблемой

Помогите, пожалуйста


person user1439690    schedule 06.06.2012    source источник


Ответы (2)


Когда вы добавляете узлы в кластер, вы должны начинать этот узел с auto_bootstrap: true в cassandra.yaml, чтобы другие узлы в кластере (в вашем случае единственный узел) поток данных нового узла (согласно токену).

Изменить. Для Casssandra-1.0 и более поздних версий нет опции в качестве начальной загрузки, в этом случае мы должны запустить второй узел с новым рассчитанным токеном, он начнет потоковую передачу данных. После завершения потоковой передачи запустите nodetool move <new_token>. для получения дополнительной информации см. Добавление узлов в кластер

Если этого не сделать, у второго узла не будет данных, которые он должен хранить согласно токену. И когда вы пытаетесь прочитать данные из Cassandra, он может искать данные на вновь добавленном узле в соответствии с токеном, но, поскольку данных нет, вы не получаете правильный результат.

person samarth    schedule 06.06.2012
comment
Но в Cassandra 1.1.0 нет опции auto_bootstrap. Итак, где мне указать эту опцию? - person user1439690; 08.06.2012

  • Пожалуйста, проверьте весь свой брандмауэр, конфигурация iptables принимает связь с другим узлом.

после добавления узла в кольцо используйте nodetool ring, чтобы просмотреть пример загрузки данных, мой кластер имеет 3 узла, результат будет аналогичным:

192.168.23.84 датацентр1 стойка1 Вверх Нормально 37,52 ГБ 33,33%
192.168.23.85 датацентр1 стойка1 Вверх Нормально 37,5 ГБ 33,33%
192.168.23.86 Датацентр1 стойка1 Вверх Нормально 37,5 ГБ 33,33%

если это похоже на то, когда вы используете гектор, используйте этот код для проверки запроса гектора к какому серверу:

MutationResult result = mutator.execute();
logger.info(" host:" + result.getHostUsed().getHost());

попробуйте написать много раз, чтобы перепроверить целевой хост, содержит ли весь ваш хост.

Я использую этот CassandraHostConfigurator для добавления многих хостов в кластер при использовании примера Hector:

CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(
                "192.168.23.84:9160,192.168.23.85:9160,192.168.23.86:9160");
cluster = HFactory.getOrCreateCluster("testcluster", cassandraHostConfigurator);
person tnk_peka    schedule 12.06.2012