2012-05-11 1 views
3

У меня есть следующий код:Как подключиться к Кассандре с помощью Гектора?

StringSerializer ss = StringSerializer.get(); 
String cf = "TEST"; 
CassandraHostConfigurator conf = new CassandraHostConfigurator("localhost:9160"); 
conf.setCassandraThriftSocketTimeout(40000); 
conf.setExhaustedPolicy(ExhaustedPolicy.WHEN_EXHAUSTED_BLOCK); 
conf.setRetryDownedHostsDelayInSeconds(5); 
conf.setRetryDownedHostsQueueSize(128); 
conf.setRetryDownedHosts(true); 
conf.setLoadBalancingPolicy(new LeastActiveBalancingPolicy()); 
String key = Long.toString(System.currentTimeMillis()); 
Cluster cluster = HFactory.getOrCreateCluster("TestCluster", conf); 
Keyspace keyspace = HFactory.createKeyspace("TestCluster", cluster); 
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get()); int count = 0; 
while (!"q".equals(new Scanner(System.in).next())) { 
    try{ 
     mutator.insert(key, cf, HFactory.createColumn("column_" + count, "v_" + count, ss, ss)); 
    count++; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

и я могу написать несколько значений, используя его, но когда я перезагрузить Кассандру, он терпит неудачу. Вот лог:

[15:11:07] INFO [CassandraHostRetryService] Сбитые службы хоста повторов начались с> размера очереди 128 и повторите задержку 5S [15:11:07] INFO [JmxMonitor] Регистрацию в JMX > me.prettyprint.cassandra.service_ASG: ServiceType = hector, MonitorType = hector [15:11:17] ОШИБКА [HThriftClient] Не удалось очистить транспорт (что следует ожидать>, если пул закрыт) в закрытии для клиента: CassandraClient org.apache.thrift.transport.TTransportException: java.net.SocketException: Broken pipe at> org.apache.thrift.transport.TIOStreamTransport.write (TIOStreamTransport.java:147) на org.apache.thrift.transport. TFramedTransport.flush (TFramedTransport.java:15 6) at> me.prettyprint.cassandra.connection.client.HThriftClient.close (HThriftClient.java:98) at> me.prettyprint.cassandra.connection.client.HThriftClient.close (HThriftClient.java:26) at > me.prettyprint.cassandra.connection.HConnectionManager.closeClient (HConnectionManager.java:308) at> me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover (HConnectionManager.java:257) at> me.prettyprint.cassandra.model .ExecutingKeyspace.doExecuteOperation (ExecutingKeyspace.java:97) at me.prettyprint.cassandra.model.MutatorImpl.execute (MutatorImpl.java:243) at me.prettyprint.cassandra.model.MutatorImpl.insert (MutatorImpl.java:69) at com.app.App.main (App.java:40) Вызвано: java.net.SocketExcep ции: Broken трубы на java.net.SocketOutputStream.socketWrite0 (Native Method) в java.net.SocketOutputStream.socketWrite (SocketOutputStream.java:109) в java.net.SocketOutputStream.write (SocketOutputStream.java:153) at> org.apache.thrift.transport.TIOStreamTransport.write (TIOStreamTransport.java:145) ... 9 еще [15:11:17] ОШИБКА [HConnectionManager] MARK HOST AS DOWN TRIGGERED для хоста> localhost (127.0. 0.1): 9160 [15:11:17] ОШИБКА [HConnectionManager] Состояние пула при завершении работы:>: {localhost (127.0.0.1): 9160}; IsActive ?: true; Активен: 1; Заблокировано: 0; Idle: 15; NumBeforeExhausted: 49 [15:11:17] INFO [ConcurrentHClientPool] Завершение работы: {localhost (127.0.0.1): 9160} [15:11:17] INFO [ConcurrentHClientPool] Завершение завершено: {localhost (127.0. 0.1): 9160} [15:11:17] INFO [CassandraHostRetryService] Хост, обнаруженный как down, был добавлен в очередь повтора: localhost (127.0.0.1): 9160 [15:11:17] WARN [HConnectionManager] Не удалось заполнить запрос на этом хосте CassandraClient [15:11:17] WARN [HConnectionManager] Исключение: me.prettyprint.hector.api.exceptions.HectorTransportException: org.apache.thrift.transport.TTransportException: java.net.SocketException: Broken pipe at> me.prettyprint.cassandra.connection.client.HThriftClient.getCassandra (HThriftClient.java:82) at> me.prettyprint.cass andra.connection.HConnectionManager.operateWithFailover (HConnectionManager.java:236) at> me.prettyprint.cassandra.model.ExecutingKeyspace.doExecuteOperation (ExecutingKeyspace.java:97) at me.prettyprint.cassandra.model.MutatorImpl.execute (MutatorImpl .java: 243) at me.prettyprint.cassandra.model.MutatorImpl.insert (MutatorImpl.java:69) at com.app.App.main (App.java:40) Вызвать: org.apache.thrift .transport.TTransportException: java.net.SocketException: Неработающая трубка на org.apache.thrift.transport.TIOStreamTransport.write (TIOStreamTransport.java: 147) at org.apache.thrift.transport.TFramedTransport.flush (TFramedTransport.java:157) at org.apache.cassandra.thrift.Cassandra $ Client.send_set_keyspace (Cassandra.java:466) at org. apache.cassandra.thrift.Cassandra $ Client.set_keyspace (Cassandra.java:455) at> me.prettyprint.cassandra.connection.client.HThriftClient.getCassandra (HThriftClient.java:78) ... 5 еще Вызвано : java.net.SocketException: Broken трубы на java.net.SocketOutputStream.socketWrite0 (нативный метод) на java.net.SocketOutputStream.socketWrite (SocketOutputStream.java:109) на java.net.SocketOutputStream.write (SocketOutputStream. java: 153) at> org.apache.thrift.transport.TIOStreamTransport.write (TI OStreamTransport.java:145) ... еще [15:11:17] INFO [HConnectionManager] Клиент CassandraClient выпущен в неактивный или мертвый пул. Закрытие. [15:11:17] INFO [HConnectionManager] Клиент CassandraClient выпущен в неактивный или мертвый пул. Закрытие. [15:11:17] INFO [HConnectionManager] Добавлен хост локальный (127.0.0.1): 9160 объединить

+0

My thrift_max_message_length_in_mb = 16, cassandra 1.0.7, hector 1.0-2, и я ждал больше и меньше 5 секунд, но он все еще не работает. – Dev

+0

Проблема была в версии геттера. С 1.0-5 он отлично работает. – Dev

ответ

2

Вы установили -

conf.setRetryDownedHostsDelayInSeconds(5); 

Пытаться ждать после перезагрузки больше чем 5 секунд. Кроме того, вам может потребоваться обновление.

thrift_max_message_length_in_mb Вы установили?

С уважением.