Cassandra 之旅 (二) Getting Started
一般来说学习某样东西, 我们都是找个范例照着范例先做一遍. 之后再可以通过资料, 自己使用积累去学习掌握它. 对于Cassandra, 我也不例外. 先按照官方文档部署一个简单的单节点服务出来玩一玩.
Step 0: 安装JAVA环境, JDK 1.6或以上
Step 1: 下载 Cassandra
- 最新版本下载地址
- Windows 版的 cassandra就是一个压缩包, 解压到你想安装的路径即可
Step 2: 基本配置
配置文件存放在<安装目录>/conf下面
Step 2.1: 配置cassandra需要使用的文件夹, 打开conf/cassandra.yaml文件
data_file_directories 修改成Windows下你想存放数据的路径, 如就存放到<安装目录>/data文件夹下. 注意前面的-是不能省略的
data_file_directories:
commitlog_directory 修改成Windows下你想存放Log的路径
saved_caches_directory 修改成Windwos下你想存放cache的路径
Step 2.2: 打开conf/log4j-server.properties
log4j.appender.R.File=<安装目录>/system.log
确保这些文件夹是存在的, 且有写入的权限.
Step 2.3: 配置内存( 可选)
cassandra默认分配内存是基于你物理内存大小的, 为物理内存的1/4到1/2. 如果你想自己配置内存使用大小, 可以打开 conf/cassandra-env.sh, 修改如下配置
#MAX_HEAP_SIZE="4G" #HEAP_NEWSIZE="800M"
一般经验来说, 你应该设置HEAP_NEWSIZE为MAX_HEAP_SIZE的1/4大小. 如果你遇到OutOfMemory的异常或者大量的GCs, 你可以尝试调大这两个值来解决这个问题.
Step 3: 启动 cassandra
到BIN目录下双击启动批处理文件cassandra.bat
只要把窗口关掉就可以关闭cassandra服务了
Step 4: 使用 cassandra-cli
cassandra-cli是一个与cassandra服务交互的命令行的接口, 可以执行创建KEYSPACE, COLUMN FAMILY, 擦入数据, 查询数据等操作.
运行在BIN目录下的cassandra-cli.bat就可以打开客户端了。cassanra-cli.bat是支持参数的,在命令行下,中转到BIN目录,运行
cassandra-cli.bat help;
可以查看如何传入参数,比如cassandra.yaml的默认配置的rpc的IP与端口分别是localhost, 9160。如果你把localhost改成本机的IP(非127.0.0.1),那你双击cassandra-cli.bat就无法连接到服务器了。这时你可以使用connect IP/PORT来连接到正确的IP与端口上。你也可以写一个批
处理:
cassandra-cli.bat -h 16.158.81.54 -u lewis -pw lewis
启动后可以看到如下信息:
注意cli的命令是以;为结束的.
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]
可以使用HELP;命令查看所有支持的命令, 以及命令的使用方法. 如:
HELP GET;
接下来我们就来操作一下cassandra数据库
首先, 创建一个Keyspace:
create keyspace DEMO; 回车执行
第二步, 指名要操作的keyspace
use DEMO; 回车执行
第三步, 创建一个叫Users的列族
[default@DEMO]create column family Users ... with key_validation_class = 'UTF8Type' ... and comparator = 'UTF8Type' ... and default_validation_class = 'UTF8Type';
好了, 接下来你就可以往里面存数据了
[default@DEMO] set Users[1234][name] = scott; Value inserted. Elapsed time: 10 msec(s). [default@DEMO] set Users[1234][password] = tiger; Value inserted. Elapsed time: 10 msec(s).
取数据如下:
[default@DEMO] get Users[1234]; => (column=name, value=scott, timestamp=1350769161684000) => (column=password, value=tiger, timestamp=1350769245191000) Returned 2 results. Elapsed time: 67 msec(s).
配置多节点集群
刚才的步骤只是建立了一个单节点的cassandra. 其实也是一个cassandra集群, 但只包含一个节点而已. 通过添加更多的节点, 就可以让它成为一个多节点的集群了.
Note:
http://www.datastax.com/download 可以下载DataStax Community Edition, 这个安装完成后, Cassandra都是默认帮你配好的。这个工具还包括CQL3的SHELL和一个WEB的管理工具。