一、软件选择

  1. apache 官方发布版本
  2. 第三方发布版本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