If you are getting the "Cluster schema does not agree" then you have a sick cluster and replication will not be working properly.
Open the cassandra-cli client and type "describe cluster;" you should see a single schema version such as... [default@unknown] describe cluster; Cluster Information: Snitch: org.apache.cassandra.locator.SimpleSnitch Partitioner: org.apache.cassandra.dht.RandomPartitioner Schema versions: e69ffb30-5525-11e0-0000-242d50cf1fbd: [127.0.0.1, 127.0.0.2] But I think you will see multiple versions. The easiest thing to do is drop the entire cluster and start again. Hope that helps. Aaron On 24 Mar 2011, at 11:45, ko...@vivinavi.com wrote: > Hi Aaron > > Thank you so much for your reply and advice. > I watched your presentation. it"s helpful for me. > > Anyway I did as following with 2 node servers.(53;1st node,54;2nd node) > I started the following write/read.php program by through Thrift at 53 server. > <?php > include_once... > $servers[0]['host'] = '**.**.254.53'; > $servers[0]['port'] = '9160'; > $KeyspaceName = 'Twissandra'; > $ColumnFamilyName = 'user'; > $Key = 'LA'; > $conn = new Connection($KeyspaceName, $servers); > $users = new ColumnFamily($conn, $ColumnFamilyName); > $users->insert($Key, array('Movie' => 'Hollywood', 'Seaside' => > 'SantaMonica' , 'Museum' => 'Getty' , 'Japanese' => 'Little Tokyo' )); > $ret=$users->get($Key); > print_r($ret); > ?> > I could get $ret at 53 server. > Then I started the following read.php program at 54 server. > <?php > include_once... > $servers[0]['host'] = '**.**.254.54'; > $servers[0]['port'] = '9160'; > $KeyspaceName = 'Twissandra'; > $ColumnFamilyName = 'user'; > $Key = 'LA'; > $conn = new Connection($KeyspaceName, $servers); > $users = new ColumnFamily($conn, $ColumnFamilyName); > $ret=$users->get($Key); > print_r($ret); > ?> > I could get $ret at 54 server. > So I confirmed these data are replicated from 53 to 54. > However I did same thing from 54 to 53 with only changed data(key='hahaha'). > (These are same keyspace,CF) > I could see data on 54 server.(no problem) > But on 53 server I had an following error message. > Fatal error: Uncaught exception 'cassandra_TimedOutException' in > /usr/share/php5/Thrift/thrift/packages/cassandra/Cassandra.php:253 > Stack trace: > #0 /usr/share/php5/Thrift/thrift/packages/cassandra/Cassandra.php(253): > thrift_protocol_read_binary(Object(TBinaryProtocolAccelerated), > 'cassandra_Cassa...', false) > #1 /usr/share/php5/Thrift/thrift/packages/cassandra/Cassandra.php(226): > CassandraClient->recv_get_slice() > #2 /usr/share/php5/Thrift/columnfamily.php(254): > CassandraClient->get_slice('hahaha', Object(cassandra_ColumnParent), > Object(cassandra_SlicePredicate), 1) > #3 /var/www/thrift/PhpcassaRead.php(44): ColumnFamily->get('hahaha') > #4 {main} > thrown in /usr/share/php5/Thrift/thrift/packages/cassandra/Cassandra.php on > line 253 > I checked on Cassandra-cli at 53 server. > [default@Twissandra] get user['hahaha']; > null > > So I think replication doesn't work from 54 to 53. > I know when I add node and then set data at 1st node, this data will be > provided to all other nodes. > But I'm not sure when I set data at 2nd node, this data should be replicated > from 2nd to 1st node. > I though this will be replicated because of ring. > > And when I tried to create keyspace or CF several times on 54(2nd server), I > had a following error message. > "Cluster schema does not yet agree" > i don't know how to schema agree. > > Am I wrong? > Thank you for your advice in advance. > > Mamoru Mac Kondo > > (2011/03/23 11:32), Aaron Morton wrote: >> >> What process are you using to confirm the data was replicated to another >> server ? And what makes you say the data is not replicated ? I think your >> understanding of the replication may be a little off, you rarely read from >> one node. Have a look at >> http://thelastpickle.com/2011/02/07/Introduction-to-Cassandra/ >> >> What happens when you try to create a keyspace or CF and it fails? >> >> It's easier to help if you provide the commands you use and any error >> messages. Also remember to check the logs on the servers for errors. >> >> Aaron >> >> On 24/03/2011, at 5:58 AM, "ko...@vivinavi.com" <ko...@vivinavi.com> wrote: >> >>> Hi maki-san >>> >>> I am so sorry this was my mistake. >>> I expected when I set data at one node, the data should be copied to the >>> other node >>> at the same keyspace and same column family by replication. >>> This replication was working. >>> I just made a mistake to get data by wrong Key.(First character of key was >>> lower-case character >>> but I thought first character was capitalized. I tried to get by key=User >>> but key=user) >>> I am so sorry for this confusion. >>> So now I confirmed the data I set at **.**.254.53 was replicated to >>> **.**.254.54. >>> (At first I started 53 with autobootstrap=false then started 54 with >>> autobootstrap=true and then >>> finally restarted 53 with autobootstrap=true. So 53 server is like a master) >>> >>> However when I set data at 54 server, this data never been replicated. >>> So this is Not bidirectional replication ? >>> Cassandra at multi-node is ring (This means no master, no slave?). >>> (Off course seeds in cassandra.yaml of both server are the same) >>> So I expected I can replicate bidirectinally. >>> Am I wrong? >>> And when I run at multi-node, I can't create keyspace, column family on >>> Cassandra-cli at other 54 server >>> (like a slave server). >>> Is this normal? >>> How can I create same keyspace and column family at multi-node? >>> or I have to restart at single-node, then can I create same keyspace and >>> column family? >>> >>> Thank you for your help in advance. >>> >>> Mamoru Mac Kondo >>> >>> (2011/03/22 18:43), Maki Watanabe wrote: >>>> How do you define your Keyspace? >>>> As you may know, in Cassandra, replication (factor) is defined as the >>>> attribute of Keyspace. >>>> And what do you mean: >>>>> However replication never happened. >>>>> I can't get data I set at other node. >>>> What did you do on cassandra, and what did you get in response? >>>> >>>> maki >>>> >>>> >>>> 2011/3/23 ko...@vivinavi.com<ko...@vivinavi.com>: >>>>> Hi Sasha >>>>> Thank you so much for your advice. >>>>> I changed JMX_PORT from 10036 to 8080 in cassandra-env.sh. >>>>> Now nodetool ring is working as following. >>>>> >>>>> # nodetool --host **.**.254.54 ring >>>>> Address Status State Load Owns Token >>>>> >>>>> 31247585259092561925693111230676487333 >>>>> **.**.254.53 Up Normal 51.3 KB 84.50% >>>>> 4871825541058236750403047111542070004 >>>>> **.**.254.54 Up Normal 66.71 KB 15.50% >>>>> 31247585259092561925693111230676487333 >>>>> >>>>> Then it seems I could set data to other node by Cassandra-cli --host other >>>>> node IP --port 9160.(Currently only 2 nodes) >>>>> However replication never happened. >>>>> I can't get data I set at other node. >>>>> I don't know what's wrong. >>>>> (I thought replication starts when cassandra -p restart) >>>>> Please advice me how to do to start replication. >>>>> Thank you for your advice in advance. >>>>> >>>>> >>>>> (2011/03/18 23:38), Sasha Dolgy wrote: >>>>> >>>>> You need to specify the -jmxport with nodetool >>>>> >>>>> On Mar 19, 2011 2:48 AM, "ko...@vivinavi.com"<ko...@vivinavi.com> wrote: >>>>>> Hi everyone >>>>>> >>>>>> I am still new to Cassandra, Thrift. >>>>>> But anyway Cassandra 0.7.4, Thrift 0.5.0 are working on java 1.6.0.18 of >>>>>> Debian 5.0.7.at single node. >>>>>> Then I had to try and check multi node on 2 servers. >>>>>> (JVM_PORT=10036 on /etc/cassandra-env.sh) >>>>>> I modified /etc/cassandra/cassandra.yaml as following. >>>>>> auto_bootstrap:false ->true >>>>>> seeds: -127.0.0.1 -> add Global IP addres of 2 servers(incl.own server) >>>>>> listen_address:localhost -> Own Global IP address(or own host name on >>>>>> /etc/hosts) >>>>>> rpc_address:localhost ->0.0.0.0 >>>>>> I run master server and then slave server. >>>>>> netstat -nl is as following. on both servers. >>>>>> Proto Recv-Q Send-Q Local Address Foreign Address State >>>>>> tcp 0 0 0.0.0.0:9160 0.0.0.0:* LISTEN >>>>>> tcp 0 0 0.0.0.0:10036 0.0.0.0:* LISTEN >>>>>> tcp 0 0 **.**.**.**:7000 0.0.0.0:* LISTEN >>>>>> >>>>>> However it seems Cassandra doesn't work. >>>>>> Because I can't get any data from Cluster (always null, data is broken?) >>>>>> So I checked the nodetool (nodetool --host IP ring). >>>>>> The nodetool had errors as following. >>>>>> Error connection to remote JMX agent! >>>>>> java.io.IOException: Failed to retrieve RMIServer stub: >>>>>> javax.naming.ServiceUnavailableException [Root exception is >>>>>> java.rmi.ConnectException: Connection refused to host: **.**.**.**; >>>>>> nested exception is: >>>>>> java.net.ConnectException: Connection refused] >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:342) >>>>>> at >>>>>> >>>>>> javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267) >>>>>> at org.apache.cassandra.tools.NodeProbe.connect(NodeProbe.java:137) >>>>>> at org.apache.cassandra.tools.NodeProbe.<init>(NodeProbe.java:107) >>>>>> at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:511) >>>>>> Caused by: javax.naming.ServiceUnavailableException [Root exception is >>>>>> java.rmi.ConnectException: Connection refused to host: **.**.**.**; >>>>>> nested exception is: >>>>>> java.net.ConnectException: Connection refused] >>>>>> at >>>>>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118) >>>>>> at >>>>>> >>>>>> com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:203) >>>>>> at javax.naming.InitialContext.lookup(InitialContext.java:409) >>>>>> at >>>>>> >>>>>> javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1902) >>>>>> at >>>>>> >>>>>> javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1871) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:276) >>>>>> ... 4 more >>>>>> Caused by: java.rmi.ConnectException: Connection refused to host: >>>>>> **.**.**.**; nested exception is: >>>>>> java.net.ConnectException: Connection refused >>>>>> at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) >>>>>> at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) >>>>>> at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) >>>>>> at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340) >>>>>> at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) >>>>>> at >>>>>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114) >>>>>> ... 9 more >>>>>> Caused by: java.net.ConnectException: Connection refused >>>>>> at java.net.PlainSocketImpl.socketConnect(Native Method) >>>>>> at >>>>>> >>>>>> java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) >>>>>> at >>>>>> >>>>>> java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) >>>>>> at >>>>>> java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) >>>>>> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) >>>>>> at java.net.Socket.connect(Socket.java:546) >>>>>> at java.net.Socket.connect(Socket.java:495) >>>>>> at java.net.Socket.<init>(Socket.java:392) >>>>>> at java.net.Socket.<init>(Socket.java:206) >>>>>> at >>>>>> >>>>>> sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) >>>>>> at >>>>>> >>>>>> sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146) >>>>>> at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) >>>>>> ... 14 more >>>>>> >>>>>> I don't know how to do. >>>>>> Please advise what am I wrong. >>>>>> And please let me know how to delete or re-build cluster. >>>>>> Because I can't even set data or make new column family currently on >>>>>> Cassandra-Cli. >>>>>> Thank you for your help in advance. >>>>>> >>>>>> -- >>>>>> >>>>> ** >>> >>> >