2012-05-11 3 views
3

나는 다음과 같은 코드가 있습니다Hector를 사용하여 Cassandra에 어떻게 다시 연결합니까?

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분 7초]가 INFO는 [CassandraHostRetryService] 쓰러진 호스트 재시 서비스> 큐 크기 (128)에서 시작하고 지연 기들에게 [15시 11분 7초] 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 : 파이프가 깨졌습니다. 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 me.prettyprint.cassandra.model.MutatorImpl.insert에서 me.prettyprint.cassandra.model.MutatorImpl.execute (MutatorImpl.java:243) 에서 .ExecutingKeyspace.doExecuteOperation (ExecutingKeyspace.java:97) (MutatorImpl.java:69) at com.app.App.main (App.java:40) 발생 원인 : java.net.SocketExcep 기 : java.net.SocketOutputStream.write (SocketOutputStream.java:153)에서 java.net.SocketOutputStream.socketWrite (SocketOutputStream.java:109) 에서 java.net.SocketOutputStream.socketWrite0 (기본 방법) 에서 파이프 깨진 at> org.apache.thrift.transport.TIOStreamTransport.write (TIOStreamTransport.java:145) ... 9 more [15:11:17] 오류 [HConnectionManager] 호스트에 대해 아래쪽 화살표로 표시된 호스트를> 로컬 호스트 (127.0. 0.1) : 9160 [15:11:17] 오류 [HConnectionManager] 종료시 풀 상태 :> : {localhost (127.0.0.1) : 9160}; IsActive ?: true; 활성 : 1; 차단됨 : 0; 유휴 : 15; [로컬 호스트 (127.0.0.1) : 9160} [15:11:17] 정보 [ConcurrentHClientPool] 시스템 종료 : {localhost (127.0.0.1) : 9160} 로컬 호스트 (127.0.0.1) : 9160 [15:11:17] WARN [HConnectionManager] fullfill 할 수 없습니다. 큐를 재시도하기 위해 down으로 탐지 된 호스트가 추가되었습니다. localhost (127.0.0.1) : 9160 [15:11:17] INFO [CassandraHostRetryService] 이 호스트의 요청 CassandraClient [15:11:17] WARN [HConnectionManager] 예외 : me.prettyprint.hector.api.exceptions.HectorTransportException : org.apache.thrift.transport.TTransportException : java.net.SocketException : 파이프가 파손되었습니다. 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 : 파이프가 깨졌습니다. at 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) 에> me.prettyprint.cassandra.connection.client.HThriftClient.getCassandra (HThriftClient.java:78) ... 5 더 에 의해 발생했습니다. : java.net.SocketException : 깨진 파이프 java.net.SocketOutputStream.socketWrite0 (네이티브 메서드) at java.net.SocketOutputStream.socketWrite (SocketOutputStream.java:109) at java.net.SocketOutputStream.write (SocketOutputStream. java : 153) at> org.apache.thrift.transport.TIOStreamTransport.write (TI OStreamTransport.java:145) ... 9 more [15:11:17] 정보 [HConnectionManager] 클라이언트 CassandraClient가 비활성 또는 비활성 풀로 릴리스되었습니다. 폐쇄. [15:11:17] 정보 [HConnectionManager] 클라이언트 CassandraClient가 비활성 또는 죽은 풀로 릴리스되었습니다. 폐쇄. [15시 11분 17초] 정보 [HConnectionManager] 추가 호스트 로컬 호스트는 (127.0.0.1) : 9160는 사용자가 설정 한

+0

내 thrift_max_message_length_in_mb = 16, cassandra 1.0.7, hector 1.0-2 그리고 나는 5 초 이상 기다렸지 만 여전히 작동하지 않습니다. – Dev

+0

문제는 hector의 버전에있었습니다. 1.0-5로 잘 작동합니다. – Dev

답변

2

수영장합니다 - 이상을 다시 시작한 후 대기하는

conf.setRetryDownedHostsDelayInSeconds(5); 

시도를 5 초 이상. 또한 업그레이드해야 할 수 있습니다.

크기는 무엇입니까 thrift_max_message_length_in_mb 설정 했습니까?

친절하게 제공합니다.

관련 문제