Кассандра и Гектор выпускают

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

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

2 ответа

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

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

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

  • Пожалуйста, проверьте все настройки вашего брандмауэра, iptables config - принять узел, общаться с другим

после добавления узла в кольцо используйте 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%

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

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

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

я использую этот CassandraHostConfigurator, чтобы добавить множество хостов в кластер при использовании примера Гектора:

CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(
                "192.168.23.84:9160,192.168.23.85:9160,192.168.23.86:9160");
cluster = HFactory.getOrCreateCluster("testcluster", cassandraHostConfigurator);
Другие вопросы по тегам