Проблемы с загрузкой схемы в cassandra

Я настраиваю установку Cassandra с одним узлом на своей виртуальной машине Ubuntu. Я изменил файл cassandra.yaml в папке /cassandra/conf, добавив свою собственную схему. Когда я попытался использовать утилиту schematool в каталоге /cassandra/bin, я получил сообщение об ошибке:

Невозможно импортировать схему, если она уже существует

Когда я попытался перейти к MBEAN loadSchemaFromYAML из консоли JMX:

Проблема с вызовом loadSchemaFromYAML: java.rmi.unmarshalexception: Error Unmarshalling return; вложенное исключение: Java.lang.ClassNotFoundException: org.apache.cassandra.config.ConfigurationException (без диспетчера безопасности: загрузчик классов RMI отключен)

Может ли кто-нибудь указать, что здесь происходит и как мне загрузить мою схему?

Спасибо


person sc_ray    schedule 14.01.2011    source источник


Ответы (1)


Вы можете импортировать схему из cassandra.yaml только один раз. (Кстати, теперь это устарело.) Если вы хотите снова импортировать схему из cassandra.yaml, вам нужно стереть каталоги данных (/var/lib/cassandra/*) и перезапустить Cassandra.

Другой вариант (и то, что вам нужно будет сделать в будущем) — создать пространства ключей и семейства столбцов с помощью bin/cassandra-cli или другого клиента.

Вот статья об изменениях схемы в реальном времени, чтобы получить ты начал.

person Tyler Hobbs    schedule 14.01.2011
comment
Судя по предоставленной вами ссылке, похоже, что если мы представим более новую версию cassandra.yaml и перезапустим сервер, определения схемы будут выбраны. Есть ли причина, по которой средство импорта схемы через cassandra.yaml устарело? Будучи новичком в j2ee, я также задавался вопросом, почему консоль jmx выдала исключение, которое я описал. - person sc_ray; 14.01.2011
comment
Нет, новая схема определенно не будет выбрана при перезапуске, если вы не очистите существующие данные и не выполните повторный импорт. Это устарело, потому что наличие нескольких источников правды в отношении схемы вызывает проблемы, а живые модификации схемы — гораздо лучший вариант (по причинам кластеризации). Я тоже не специалист по J2EE/JMX, и я не очень понимаю, почему возникает именно это исключение :/ . Я не думаю, что это нормальный. - person Tyler Hobbs; 14.01.2011
comment
Можете ли вы уточнить несколько источников истины относительно схемы? - person sc_ray; 14.01.2011
comment
Ну, если вы принимаете изменения схемы через файл конфигурации, а также принимаете эти изменения через API, необходимо обрабатывать необычные сценарии, особенно если схему не нужно импортировать из файла конфигурации. Это значительно упрощает путь кода, чтобы выбрать тот или иной. - person Tyler Hobbs; 16.01.2011