Cassandra作为目前很热门的一个NOSQL型数据库,引起了很多的关注。对NOSQL感兴趣的我,也来作了一次简单的测试。
废话不多说,下面就来介绍下Cassandra多节点的部署。
部署要求:
1. JDK1.6
2. OS:linux,我在windows上实验过,不知道为啥一直没通(7000端口上只有windows的发包,双方不互相通信)
3. cassandra 0.6
OK,基本的东西都有了,进入到cassandra的目录,首先需要修改一些相关的文件路径:
1. log4j.properties 文件输出路径修改
2. storage-conf.xml CommitLogDirectory和DataFileDirectory路径修改
接着进行分布式节点的配置,还是修改torage-conf.xml :
1. <ClusterName>Test Cluster</ClusterName>
这个要求所有节点的名字都相同,如果不相同,则报类似 AName != BName 的错误
2. <ColumnFamily Name="Standard1" CompareWith="BytesType"/>
配置ColumnFamily 的一些属性,其中name是所要使用的ColumnFamily 名称,可以多个,客户端做CRUD操作时需要指定。注意所有的节点配置都需要一样(我就曾因配置不一致出过ClassCastException的异常)
3. <ReplicationFactor>2</ReplicationFactor>
配置数据需要复制的数量,复制的策略分RackUnawareStrategy和RackAwareStrategy两种方式(会根据不同的数据分布策略将复制数据进行不同的分布,参考:
http://wiki.apache.org/cassandra/Operations)
4. <Seeds>
<Seed>10.10.13.220</Seed>
<Seed>10.10.13.181</Seed>
<Seed>10.10.13.232</Seed>
</Seeds>
这个是所有分布式服务器节点的IP地址,如上面配置了3个IP即3个Cassandra节点
5. <ListenAddress>10.10.13.220</ListenAddress>
<ThriftAddress>10.10.13.220</ThriftAddress>
本节点监听客户端数据和与其他服务器节点通信的IP地址,只能为本机IP,且不能为127.0.0.1或localhost,否则与其他服务器不能建立正确交互
此处的IP地址也可以不填,即值为空,则所有的节点配置都一样,更方便部署。
搞定storage-conf.xml !下面的工作就是将所有的Cassandra服务器节点依次启动,通过日志就可以看到相关的节点连接上了,日志为:
INFO 13:04:52,098 Node /10.10.13.232 is now part of the cluster
到这里,Cassandra分布式节点服务器的搭建就完成了。使用官网提供的客户端代码进行测试,发现数据已经提交到服务器并且在多个节点间进行复制了
在这里抱怨一下:之前由于没有足够的服务器,使用windowsXP+solaris双节点进行测试,发现怎么也建立不起来。。。后来加入linux后,solaris+linux的方式却能正常走通,配置也都是一样的。
有空研究下为何在我的windows上不支持。。。。
参考地址:
http://cassandra.apache.org/