dqk 2012-07-18
Cassandra 是个高级话题, 就算她变得越来越好使,用户还是可能会对初体验感到畏惧。这篇文档目的是提供一些简单的指引,教会新用户如何安装 Canssandra,最终架设起一个可用的集群(Cluster)。
获取项目、发布、稳定性、臭虫和特性的最佳方式,是订阅用户邮件列表(subscription required) 和参与到 #cassandra IRC 频道。
任何时候都可以选择一堆不同的版本:
Cassandra 的稳定发布版已被充分测试,不会有严重问题(或者问题已经被获悉并且写到文档中了)。如果你在建设一个产品环境,稳定版是你的选择。
你总能从这里找到最新稳定版的下载链接:website。
测试版和发布候选比稳定发布版更激动人心。由于 API 和磁盘存储格式会和主要版本可能会改变,尝试这些版本会让你更新先人一步。期待小白鼠们的测试和反馈!
Nightly 版本显示了当前的开发状态,她们包含了前一天添加的所有新特性,臭虫修正和新臭虫。唯一的保障是她们构建成功并通过单元测试了。Nightly 版本是尝试新特性和改动的入手捷径。但是使用有风险,请谨慎。
最新的 Nightly 版本可以在 这里 下载。
Cassandra 的 subversion 库是开发活动活跃的地方。任何对贡献代码有兴趣的人都可以从 trunk 中检出代码。如果你在 subversion 的代码中运行,一定要常常更新,并且订阅 邮件列表 以获得最新的消息。
关于检出代码的指引可以在这里找到 website。
Cassandra 往往以机器集群的方式部署,但是在单台机器上也能跑得很好。为避免一下就要对付巨大的复杂系统,玩单机是入门良径。
现在还没有安装程序,最简单的方法就是从解压的目录1 或者 SVN 检出(参见: 选择一个版本)目录直接运行 Canssandra。如果你下载的不是二进制版本,你需要先使用 ant 编译它。
发布版的样例设置 conf/storage-conf.xml 包含了一些比较推荐的默认值和注释,但是你要保证 CommitLogDirectory 和 DataFileDirectories 都存在。 另外,最好也花点时间检查一下 conf/log4j.properties,确保配置中指定的目录都存在。
Mac OS X 的一些用户可能会在运行 Java 6 的时候遇到困难。如果你持续获取 Apple 的最新更新,Java 6 就已经安装好了 (包含于 Mac OS X 10.5 Update 1 中)。 不幸的是,Apple 在默认情况下是不使用它的。 你需要做的是修改环境变量 JAVA_HOME 为 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home,并且把 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin 添加到环境变量 PATH 中。
万事俱备,只欠东风,现在你可以在命令行中运行 bin/cassandra -f2 来启动 Cassandra 了! 服务应该在前台启动(非后台方式),并且把日志打印到标准输出上。如果你没看到吓人的词汇(如 "error" 或者 "fatal"), 或者像 java stack trace 之类的东西, 那么你就成功了。请随意尝试 CassandraCli 和 ThriftInterface 的例子。遇到问题莫恐慌,冷静的看看 出岔子了!。
建设一个 Cassandra 集群 几乎 就是对每个节点重复 第二步。 不过还是有一些例外。
Cassandra 的节点之间通过一种叫做 "八卦"(Gossip) 的机制交流信息,为了让她们能“八”起来,需要先把至少已有集群中的一个节点介绍给新节点,这个过程称作“播种”(Seed)。 你可以自己选一些少数稳定的节点作为种子,但是没有很爽很快的方式去完成这件工作 …… 你需要保证每个种子节点至少认识一个别的节点,别的节点也需要认识别的节点,如果落入鸡生蛋、蛋生鸡的循环就没完没了了。
除了“播种”外,你还需要设置 IP 接口,保证其他节点可以访问 ListenAddress,客户端机器可以访问 ThriftAddress。
当所有东西都配置完,节点也开始跑了,使用 bin/nodetool 工具去检验集群的状态。例如:
eevans@achilles:~$ bin/nodetool -host 98.139.220.175 ring Address Status Load Range Ring 169048975998562660269742699624378098572 98.139.220.175 Up 0.02 GB 14183696824377310051808173385764689249 |<--| 98.139.169.152 Up 0.4 GB 28356863910078205288614550619314017621 | ^ 98.139.220.176 Up 0.13 GB 42530828068625072228863933889289238187 |-->|
更多的集群机器的控制操作参见 Operations。
如果你没有足够多的机器去试验 Cassandra 集群,你可以访问 EC2 并尝试 Cassandra EC2。
Cassandra 使用 Thrift 作为它的客户端接口 API。 Thrift 支持很多种编程语言的访问,所以你可以只使用 Thrift 来访问, 或者使用 高级点的客户端 来访问 Cassandra。 请参考 Thrift wiki, 开卷有益。在动手之前还可以看看 ThriftExamples 中的 Cassandra 样例。
Cassandra 的主 API/RPC/Thrift 使用的端口是 9160。 不要和 JMX 端口弄混了哦!
找个演示程序看看也会很有帮助,例如 Twissandra (Python + Django) 。
如果你按照指引的步骤做了,但是没跑成功,我们很乐意帮助。为了解决问题,请告诉我们充分的信息:
把日志 level 设为 debug (修改 conf/log4j.properties) 并保存输出的结果。
在 邮件列表存档 上搜索,看看是不是别人也遇到过这个问题,是否解决了这个问题。
登录到 bug 追踪系统 上。
最后,在邮件列表上提交一份包含详细内容的信息 (需要先订阅), 或者跑到 IRC (network irc.freenode.net, channel #cassandra) 上吱一声。
Footnotes:
Debian 或者 Debian 派生的系统的用户可以直接安装最新的稳定发布版, 参看 DebianPackaging 以获取更多的信息。 (1)
若想知道更多关于启动脚本的信息,参看 RunningCassandra。 (2)