Ошибка вставки Cassandra

#cassandra #brisk

#кассандра #brisk

Вопрос:

У меня есть кластер Cassandra с 4 узлами с 2 узлами Cassandra и 2 узлами brisk [cassandra TT]. Быстрая бета-версия 2

Я использовал cassandra-cli для вставки создания и обновления семейств столбцов

Мои вставки и прогнозы всегда завершаются неудачно. Например

Семейство столбцов счетчика

 [default@StatsKeySpace] create column family Impressions with comparator=UTF8Type and default_validation_class=CounterColumnType and key_validation_class=UTF8Type;
175d69d0-eb6f-11e0-0000-93bbb4d362fc
Waiting for schema agreement...
... schemas agree across the cluster
[default@StatsKeySpace] incr Impressions['Test']['impressions'] by 10;
null
[default@StatsKeySpace] incr Impressions['Test']['impressions'] by 1; 
null
[default@StatsKeySpace] get Impressions['Test']['impressions'];
null
[default@StatsKeySpace] list Impressions;
Using default limit of 100
null
  

Стандартное семейство столбцов

 [default@StatsKeySpace] set TestColumnFamily['Test']['tamil']='hai';
null
  

Все узлы в кластере активны

Это мое определение пространства ключей

 Keyspace: StatsKeySpace:
  Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
  Durable Writes: true
    Options: [replication_factor:1]
  

Я попробовал cassandra-cli в режиме отладки и обнаружил эту ошибку

 [default@unknown] use StatsKeySpace;
Authenticated to keyspace: StatsKeySpace
[default@StatsKeySpace] incr Impressions['tamil']['count'] by 1;
null
java.lang.RuntimeException
    at org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:297)
    at org.apache.cassandra.cli.CliMain.processStatement(CliMain.java:217)
    at org.apache.cassandra.cli.CliMain.main(CliMain.java:345)
  

Оба семейства столбцов имеют значение replicate_on_write false
Заранее спасибо за помощь

С уважением, Тамил

Ответ №1:

Благодаря jbellis я обновил версию cassandra, поставляемую с brisk, и запустил cassandra-cli с установленным режимом отладки. Как упоминал jbellis, я получил значимое исключение.

Исключение UnavailableException — недостаточно активных узлов для выполнения фактора репликации.

Поскольку brisk использует brisksnitch, который развертывает узлы brisk и узлы cassandra в разных контроллерах домена. Один из моих 4 узлов кластера, который является исходным для Brisk DC, не работал. Я надеюсь, что именно поэтому я получал это исключение.

Итак, я перезапустил весь свой кластер, обновив все узлы с помощью версии 0.8.6 и keyspace с помощью simplestrategy, поскольку в моем развертывании должен быть только один центр обработки данных.

Теперь все мои вставки и проекции работают нормально 🙂 Надеюсь, brisk b2 совместим с 0.8.6 во всех аспектах

С уважением, Tamil.s

Ответ №2:

Вы пытаетесь увеличить столбцы, не являющиеся счетчиками. См. http://www.datastax.com/dev/blog/whats-new-in-cassandra-0-8-part-2-counters для примера создания CF для использования со счетчиками.

(Brisk b2 поставляется с довольно старой версией Cassandra на данный момент. Я считаю, что более новые версии вернут более полезное сообщение об ошибке.)

Комментарии:

1. Привет, Jbellis, проверьте конфигурацию. Если я не ошибаюсь, я четко упомянул default_validation_class=CounterColumnType . Даже я сталкиваюсь с той же ошибкой, когда использую стандартное семейство столбцов в случае 2.