cassandra
http://wiki.apache.org/cassandra/GettingStarted_ZH
简介
Cassandra 是个高级话题, 就算她变得越来越好使,用户还是可能会对初体验感到畏惧。这篇文档目的是提供一些简单的指引,教会新用户如何安装 Canssandra,最终架设起一个可用的集群(Cluster)。
第零步: 找到组织
获取项目、发布、稳定性、臭虫和特性的最佳方式,是订阅用户邮件列表(subscription required) 和参与到 #cassandra IRC 频道。
第一步: 选个版本
任何时候都可以选择一堆不同的版本:
稳定的发布
Cassandra 的稳定发布版已被充分测试,不会有严重问题(或者问题已经被获悉并且写到文档中了)。如果你在建设一个产品环境,稳定版是你的选择。
你总能从这里找到最新稳定版的下载链接:website。
测试版和发布候选
测试版和发布候选比稳定发布版更激动人心。由于 API 和磁盘存储格式会和主要版本可能会改变,尝试这些版本会让你更新先人一步。期待小白鼠们的测试和反馈!
Nightly 版本
Nightly 版本显示了当前的开发状态,她们包含了前一天添加的所有新特性,臭虫修正和新臭虫。唯一的保障是她们构建成功并通过单元测试了。Nightly 版本是尝试新特性和改动的入手捷径。但是使用有风险,请谨慎。
最新的 Nightly 版本可以在 这里 下载。
Subversion
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)