一、软件选择
- apache 官方发布版本
- 第三方发布版本DataStax Community
apache的版本不多说了,这里讲下DataStax的发行版,用过hadoop的人大家都知道cloudera是Hadoop的第三方发布者,它的CDH产品越来越让大家所青睐,它是基于apache稳定版,打了很多bug修复和功能补丁,而且对部署和配置上有很多自动化的地方。我是cloudera产品的粉丝,所以这里我选择了DataStax Community 1.2版本作为我的开始。
P.S. 本节遇到的问题:java 1.6.0_27-ea下无法正常运行cassandra1.2.3因为CassandraDaemon.setup()方法解析JDK 版本时出错(因为我的JDK是ea版)。解决办法:这个要不改为1.2.2版本,要不修改源码。
二、软件安装——单机版(适用于windows和linux版本)
1. 下载软件
> apache1.2.2版本
wget http://mirrors.cnnic.cn/apache/cassandra/1.2.2/apache-cassandra-1.2.2-bin.tar.gz
> DataStax 1.2版本
curl -OL http://downloads.datastax.com/community/dsc.tar.gz
2. 解压缩安装
3. 运行服务器(windows运行bat文件)
命令:./bin/cassandra -f
使用参数-f,可以将服务挂到前台,取消-f参数服务将后台运行
4. CLI客户端
$CASSANDRA_HOME/bin/cassandra-cli
#创建keyspace. 它可以简单理解为RDBMS中的数据库
create keyspace company;
use company;
#创建column family,它可以简单理解为RDBMS中的table
create column family dept
with key_validation_class = 'UTF8Type'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type';
#插入数据
set dept['dev']['name']='Monkey D. Luffy';
#列出dept所有数据
list dept;
5. CQL(cassandra query language)客户端
CQL提供了类SQL的语言对cassandra进行操作
命令:./bin/cqlsh
cqlsh> use company;
cqlsh:company> select * from dept;
key | column1 | value
-----+---------+-----------------
dev | name | Monkey D. Luffy
6. 特殊目录
- /var/lib/cassandra/commitlog
- /var/lib/cassandra/data #数据目录
三、软件安装——集群版(Linux)
1. 准备工作
1.1. 停止服务:首先ps -ef | grep cassandra获取PID,然后 kill -9 <PID>。也可以修改bin/stop-server脚本来完成此事。
1.2 清理数据目录:这一步很重要,一定要做。rm -rf /var/lib/cassandra/*
2. 集群配置
我们先配置第一台,然后将它的配置分发到其它服务器就可以了。
vi conf/cassandra.yaml
cluster_name: 'YourClusterName'
num_tokens: 256
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "110.82.155.0,110.82.155.3" # 这里每个数据中心建议至少配置2个
listen_address: 110.82.155.0 # 本机IP
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch
P.S. 其它机器只需要修改listen_address为本机IP就可以了。如果服务器配置好的hostname和ip映射(/etc/hosts),则listen_address字段可以不配置。
3. 启动集群
用ssh工具,或者到每台机器上执行./bin/cassandra
4. 验证配置
./bin/nodetool status
四、压力测试
./tools/bin/cassandra-stress -d x.x.x.1,x.x.x.2 -t 100 -n 500
- -d 测试节点列表,逗号分隔,默认为localhost
- -t 测试客户端线程数,默认为50
- -n 插入key数量,默认为100万
- -o 操作类型,可选值:INSERT, READ, INDEXED_RANGE_SLICE, MULTI_GET, COUNTER_ADD, COUNTER_GET。默认值为:INSERT
- 更多参数看这里:http://www.datastax.com/docs/1.2/references/stress
下面是我单机(8core CPU,32GB内存)未优化后测试的结果:
./cassandra-stress
total,interval_op_rate,interval_key_rate,latency/95th/99th,elapsed_time
168475,16847,16847,0.4,5.1,26.9,10
399369,23089,23089,0.3,1.5,171.9,20
664259,26489,26489,0.3,1.2,115.8,30
903298,23903,23903,0.3,1.0,43.8,40
1000000,9670,9670,0.3,1.0,43.8,45
--end