2012-07-03 2 views
2

Я начал работать с cassandra. Поэтому я загружаю cassandra (1.1.1) в свой Windows-компьютер и запускаю его. Все работает нормально. Таким образом, я начал переопределять старое приложение (в java using hector 1.1), которое импортирует около 200.000.000 для 4 таблиц, которые должны вставляться в 4 столбца. После импорта около 2.000.000 записей я исключение тайм-аута и Кассандры не реагирует на просьбы:Тайм-аут cassandra hector

2012-07-03 15:35:43,299 WARN - Could not fullfill request on this host CassandraClient<localhost:9160-16> 
2012-07-03 15:35:43,300 WARN - Exception: me.prettyprint.hector.api.exceptions.HTimedOutException: TimedOutException() 
.... 
Caused by: TimedOutException() 
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:20269) 
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) 
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:922) 
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:908) 
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:246) 
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:243) 
at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:103) 
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258) 

Последние записи внутри логфайл являются:

INFO 15:35:31,678 Writing [email protected](7447722/53551072 serialized/live bytes, 262236 ops) 
INFO 15:35:32,810 Completed flushing \var\lib\cassandra\data\keySpaceName\cf2\keySpaceName-cf2-hd-205-Data.db (3292685 bytes) for commitlog position ReplayPosition(segmentId=109596147695328, position=131717208) 
INFO 15:35:33,282 Compacted to [\var\lib\cassandra\data\keySpaceName\cf3\keySpaceName-cf3-hd-29-Data.db,]. 33.992.615 to 30.224.481 (~88% of original) bytes for 282.032 keys at 1,378099MB/s. Time: 20.916ms. 
INFO 15:35:33,286 Compacting [SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-8-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-6-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-7-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-5-Data.db')] 
INFO 15:35:34,871 Compacted to [\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-9-Data.db,]. 4.249.270 to 2.471.543 (~58% of original) bytes for 30.270 keys at 1,489916MB/s. Time: 1.582ms. 
INFO 15:35:41,858 Compacted to [\var\lib\cassandra\data\keySpaceName\cf2\keySpaceName-cf2-hd-204-Data.db,]. 48.868.818 to 24.033.164 (~49% of original) bytes for 135.367 keys at 2,019011MB/s. Time: 11.352ms. 

Я создал 4 семейства столбцов как следующее :

ColumnFamilyDefinition cf1 = HFactory.createColumnFamilyDefinition(
“keyspacename”, 
“cf1”, 
ComparatorType.ASCIITYPE); 

В столбце семьи следующий столбец подсчитывать:

  1. 16 колонна
  2. 14 колонна
  3. 7 colmuns
  4. 5 колонок

ключевым пространство создается с коэффициентом репликации 1 и стратегией по умолчанию (простой) я вставить записи (строки) с ' Mutator # AddInsertion '

Любые советы, избегающие этого исключения?

С уважением WM

+0

Это много данных, которые нужно вставлять в один узел на рабочем столе. Похоже, вы пострадали от процесса уплотнения. Если вы запустите это в реальном кластере (т. Е. 3+ машины с RF = 2), я сомневаюсь, что вы увидите эту проблему. –

+0

Я создал новую среду, как описано ниже. Тот же вопрос –

+0

Можете ли вы опубликовать код, который делает вставки? –

ответ

1

Это исключение, в основном Cassandra говорят, что это достаточно далеко позади на мутации, которые не завершат свои запросы, прежде чем они тайм-аут. Предполагая, что ваш компьютер не является зверем, вам, вероятно, следует задушить ваши запросы. Я предлагаю спать некоторое время после того, как поймать это исключение, а затем повторить попытку; нет никакого вреда в случайном написании той же строки дважды, и Кассандра должна догнать писать довольно быстро.

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

+0

Мой компьютер A имеет 4 ядра, 8GB Ram. Я добавил 2 ПК B и C (каждый 2 ядра, 4 ГБ оперативной памяти) в кластер и изменил коэффициент репликации на 2. Перезапуск импорта имеет тот же результат. После возникновения исключения я подождал 10 минут и откройте командную строку cassandra. Выполнение «описания кластера» приводит к тому, что маска A недоступна. –

+0

Я создал новую среду. 3 ПК 4 ядра и 8 ГБ RAM. Моя программа работает на другом ПК. Внутри программы я получаю исключение и добавляю задержку и повторю попытку вставки. –

+0

Похоже, что процесс Кассандры либо заканчивается из кучи, либо ОС убивает его, чтобы освободить память. Я не парень из Windows, поэтому я не знаю, как проверить второй случай, но вы должны увидеть что-то в журналах, если оно заканчивается из кучи. –