cassandra的列簇数据模型其实在构建带有日志结构更新显示的列簇索引十分方便。同时其对物理视图和内置缓存也有很强的支持。
(一)cassandra 安装:
cassandra 要求java版本在java1.6及以上。
1,环境准备:java1.6及以上,cassandra安装包
2,解压安装包,进入配置文件conf文件中
3, 环境配置
a, 在 conf/cassandra.yaml 中配置变量:
data_file_directories:数据存储目录,默认设置为/var/lib/cassandra/data
commitlog_directory :日志提交目录,默认设置为/var/lib/cassandra/commitlog
saved_caches_directory :缓存保存目录,默认设置为/var/lib/cassandra/saved_caches
设置完后确保这些目录均已创建。(注意当前用户对文件的读写权限,应是可读写的)
b, log默认的写入目录为:/var/log/cassandra/,可通过conf/log4j-server.properies文件对其进行修改。即修改log4j.appender.R.File=/var/log/cassandra/system.log 的值即可。
c,配置内存使用
默认情况下,cassandra将根据主机的物理内存使用情况分配cassandra内存,一般为可用RAM的1/2 或1/4 。要自定义Cassandra memory,更改文件conf/cassandra-env.sh,更改参数:#MAX_HEAP_SIZE="4G"
#HEAP_NEWSIZE="800M"
对应的值。根据thumb机制,一般设置HEAP_NEWSIZE为MAX_HEAP_SIZE的1/4,如果在此配置下出现OutOfMemory 或GC即垃圾回收频繁,可增加这两个参数对应的值
4. 启动Cassandra
a, 启动cassandra服务 命令行输入:
bin/cassandra -f (如果不输入-f 服务将运行在后台)
如果没出现"error", or "fatal",或java 栈等错误信息,启动成功。要停止服务,可使用"Control-C",或者直接杀掉进程,如输入'pkill -f CassandraDaemon'命令
b,启动和使用cassandra-cli
在命令行中使用bin/cassandra-cli连接本地cassandra实例,若连接成功,显示如下信息:
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 1.0.7
Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.
[default@unknown]
启动成功后可通过cli shell来进行数据操作,每条命令以“;”终止
c ,测试数据操作
[default@unknown] help; ------->显示帮助信息
[default@unknown] create keyspace DEMO; ------->创建键空间DEMO
[default@unknown] use DEMO; ------->切换到键空间DEMO
[default@DEMO] create column family Users ------->创建列簇 Users
[default@DEMO] set Users[1234][name] = scott; ------->在Users列簇中设置存储name列的值为scott, 1234为插入该行对应的行键
[default@DEMO] set Users[1234][password] = tiger; ------->在Users中设置password值为tiger
[default@DEMO] get Users[1234]; -------> 查询列簇Users值(通过行key 1234查找)
注:
(1)插入数据默认的存储格式为UTF-8格式,可通过创建或更新列簇的形式对其更改。具体命令格式可参考:help update column family; 'help create column family;'
(2) 几个常用概念:key, comparator,value,key_validation_class
(二)cassandra-cli shell 操作:(版本 Cassandra 1.0.6)
通过cassandra-cli 能够连接集群中的远程节点并创建/更新schema和设置/获取记录数据
1 启动 cli:
a :在启动cli前应确保cassandra服务已经启动,然后通过bin目录下的cassandra-cli脚本启动cli
bin/cassandra-cli
如显示如下信息,则显示成功:
Welcome to cassandra CLI.
Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
b:通过主机/端口形式启动相应的node系统
connect localhost/9160;
2 创建 keyspace运行实例
create keyspace Twissandra;
3 选择使用的keyspace
执行查询等操作前须制定相应的keyspace
use Twissandra;
4 创建列簇
create column family User with comparator = UTF8Type;
进行下面操作前,需使用如下命令更新schema,命令设置了变量的返回值显示格式(utf-8),同时对age增加了index_type方便Filter(过滤)
update column family User with
column_metadata =
[
{column_name: first, validation_class: UTF8Type},
{column_name: last, validation_class: UTF8Type},
{column_name: age, validation_class: UTF8Type, index_type: KEYS}
];
5 添加数据
添加数据前,应先指定key的类型。命令如下:
assume User keys as utf8;
该命令作用时间:只持续到cli 会话时间,因此在退出和重启时须在执行一次该命令。
添加数据命令如下:
set User['jsmith']['first'] = 'John';
set User['jsmith']['last'] = 'Smith';
set User['jsmith']['age'] = '38';
常见错误:this cannot parse 'John' as hex bytes ......该错误通常是因为没有设置默认的key类型或在创建列实例时没有更新schema
6 更新数据
通过重新设置数据实现更新操作
set User['jsmith']['first'] = 'Jack';
7 获取数据
get User['jsmith'];
8 查询数据
get User where age = '12';
9 获取帮助
help;
10 退出 cassandra-cli
quit;
11 通过cassandra-cli执行脚本操作
bin/cassandra-cli -host localhost -port 9160 -f script.txt
参考文档:
cassandra-cli shell API官方说明:http://wiki.apache.org/cassandra/API
创建多节点集群:http://wiki.apache.org/cassandra/MultinodeCluster