2012-07-23 3 views
3

카산드라 클러스터 (1.0.10)에서 이상한 동작이 나타납니다.복제 인수가없는 cassandra *에 키 공간 설정

3 노드 클러스터가 실행 중입니다. here을 언급 한 바와 같이 문제가되지 않습니다 노드를 연결할 수 없습니다와

[[email protected]] create keyspace foo; 
ae639ba0-d4b8-11e1-0000-424d3d43a8df 
Waiting for schema agreement... 
Warning: unreachable nodes 10.227.65.172, 10.51.62.63... schemas agree across the cluster 
[[email protected]] use foo; 
Authenticated to keyspace: foo 
[[email protected]] create column family User with comparator = UTF8Type; 
b4608180-d4b8-11e1-0000-424d3d43a8df 
Waiting for schema agreement... 
Warning: unreachable nodes 10.227.65.172, 10.51.62.63... schemas agree across the cluster 
[[email protected]] update column family User with 
...    column_metadata = 
...    [ 
...    {column_name: first, validation_class: UTF8Type}, 
...    {column_name: last, validation_class: UTF8Type}, 
...    {column_name: age, validation_class: UTF8Type, index_type: KEYS} 
...    ]; 
b70562c0-d4b8-11e1-0000-424d3d43a8df 
Waiting for schema agreement... 
Warning: unreachable nodes 10.227.65.172, 10.51.62.63... schemas agree across the cluster 
[[email protected]] set User['jsmith']['first'] = 'John'; 
null 
UnavailableException() 
     at org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:15206) 
     at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:858) 
     at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:830) 
     at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:901) 
     at org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:218) 
     at org.apache.cassandra.cli.CliMain.processStatementInteractive(CliMain.java:220) 
     at org.apache.cassandra.cli.CliMain.main(CliMain.java:348) 

(문제점 : 나는 복제 계수를 설정하지 않고 키 스페이스 을 작성하는 경우 데이터를 입력하려고 할 때

는, 그때 나는 오류를 얻을)

그러나 키 공간을 만들고 복제 인수 (1, 2 또는 3)를 지정하면 올바르게 작동합니다.

복제 인수를 지정하지 않고 클러스터를 생성하는 데 문제가 있으면 작성시 예외가 발생하지 않아야합니까? 다중 노드 클러스터에서 복제 요인을 지정하지 않으면 예상되는 작업은 무엇입니까?

+0

버그처럼 들립니다. 버그 보고서는 https://issues.apache.org/jira/browse/CASSANDRA – psanford

+0

에 제출할 수 있습니다. 감사합니다 - 버그 접수 : https://issues.apache.org/jira/browse/CASSANDRA-4486 – agentgonzo

답변

3

cassandra-cli에서 키 공간을 만들 때의 기본 복제 전략은 NetworkTopologyStrategy (NTS)이며 실제로는 replication_factor이라는 개념이 없습니다. NTS 용 복제본은 데이터 센터별로 구성됩니다. NTS를 사용할 때의 기본 복제 옵션은 "{datacenter1:1}"입니다. 즉, 하나의 복제본을 "datacenter1"복제본 그룹에 넣어야합니다. 특정 스 니치가 구성되어 있지 않으면 모든 노드가 "datacenter1"에 할당 될 가능성이 큽니다.

나는 카산드라 - CLI는 당신이 또한 너무 placement_strategySimpleStrategy의를 지정하지 않고 replication_factor을 지정할 수 없습니다해야하기 때문에, 당신은 어떻게 1, 2 또는 3으로 복제 계수를 설정 한에 대한 혼란 스러워요, 당신이 그 일을한다면, 나는 그 차이를 더 잘 알고 있다고 생각합니다.

어쨌든 효과적인 복제 요소가 기본 경우 1이므로 문제가 실제로 경고 메시지의 다운 노드라고 예상합니다. 당신이 인용 한 메일에서 논의 된 바와 같이 정말로 좀비 노드입니까, 아니면 여전히 링에 있고 도달 할 수없는 실제 노드입니까? nodetool ring의 결과는 왜 카산드라가 귀하의 기록을 성공적으로 저장할 수 있다고 생각하지 않는지 진단하는데 도움이됩니다.

마지막으로, 나는 당신이 cassandra-cli와보다 cqlsh 도구 많은 쉽게 작업의 종류를 찾을 수 있다고 지적한다. 이 경우 적어도 명시 적 복제 전략 및 전략 옵션을 제공해야합니다.

+0

수동으로 RF 설정, 배치 전략을 너무, 너무 잘 작동하도록 설정했다. 방금 만든 '키 스페이스 foo 만들기'를 한 것입니다. 키 스페이스를 설정했지만 그 키 스페이스에 대한 모든 액세스는 실패했습니다. csh를 사용하라고 알려주는 것은 cassandra-cli를 사용할 때 버그가있는 경우 도움이되지 않습니다. 버그 보고서를 제출할 것입니다. – agentgonzo

+0

그래, 카산드라 - 클라이의 버그는 아니야. –