2012年(5)
分类: LINUX
2012-07-18 20:36:23
Cassandra简介
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当***能最丰富,最像关系数据库的。支持的非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。
一、java环境部署 1.1 JDK的安装下载JDK1.6_20以上的版本,本案例以1.60_29为例
安装JDK
chmod +x jdk-6u29-linux-x64.bin
./ jdk-6u29-linux-x64.bin
1.2环境变量配置配置.bash_profile
参考:
export JAVA_HOME=/home/zcb/jdk1.6.0_29
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
source . bash_profile #加载环境变量,也可reboot
二、Cassandra的安装 2.1下载cassandra安装包,本案例以apache-cassandra-1.0.6-bin.tar.gz为例#tar -zxvf apache-cassandra-1.0.6-bin.tar.gz
#cd apache-cassandra-1.0.6
#mkdir -p /var/log/cassandra
#chown -R zcb.zcb /var/log/Cassandra //注意目录的属主和属组
#mkdir -p /var/lib/cassandra
#chown -R zcb.zcb /var/lib/cassandra
注:由于原二进制安装包没有包含安全机制的class包,现已完整打包可用zip包用于部署。
部署步骤:
1、直接将apache-cassandra-1.0.6.zip上传至服务器指定目录
2、mkdir apache-cassandra-1.0.6
3、unzip apache-cassandra-1.0.6.zip -d apache-cassandra-1.0.6
4、#mkdir -p /var/log/cassandra
#chown -R zcb.zcb /var/log/Cassandra
#mkdir -p /var/lib/cassandra
#chown -R zcb.zcb /var/lib/cassandra
三、Cassandra的配置 3.1修改conf目录下的log4j.properties文件:log4j.appender.R.File=/var/log/cassandra/logs/system.log #日志文件目录,默认
3.2修改conf目录下的cassandra.yaml配置文件:cluster_name: 'PisCluster' #集群名称
注:如重命名集群名称后,需删除原cassandra数据文件,重新启动初始化
data_file_directories:
- /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
# Cassandra在写数据之前,也需要先记录日志,称之为commitlog,然后数据才会写入到Column Family 中
saved_caches_directory: /var/lib/cassandra/saved_caches
#数据缓存文件在磁盘中的存储位置
authenticator:org.apache.cassandra.auth.AllowAllAuthenticator #允许所有用户访问
authenticator: org.apache.cassandra.auth.SimpleAuthenticator
#合法的用户和对应的密码都在passwd.properties文件中定义
authority:org.apache.cassandra.auth.AllowAllAuthority #登录的用户具有所有权限fM
authority: org.apache.cassandra.auth.SimpleAuthority
#合法的用户和对应的权限都在access.properties文件中定义
listen_address: #节点间通讯的地址
rpc_address: 0.0.0.0 #对外服务的地址, 0.0.0.0 意为侦听所有地址
rpc_port: 9160 #服务端口为9160
其他配置,待补充
3.3 密码策略文件配置:passwd.properties
用户名=密码 #pis=pispwd
access.properties
1、
#设定那些用户可以显示keyspaces列表,多个用户用逗号分隔。
2、Keyspace1.
#pis用户对keyspace1有可读可写权限
3、Keyspace1.Standard1.
#pis用户对keyspace1中的Standard1列族有可读可写权限。
注:cassandra的用户权限细分定位到column family (列族)。
3.4 启动与停止启动:
cd /apache-cassandra1.0.3
bin/Cassandra 或bin/Cassandra –f #-f 前台启动
如有Starting up server gossip信息,说明cassandra已在本机运行
ps –ef | grep java 查看服务是否启动
注:如果是使用zip包部署,在添加过用户密码策略后,直接可执行cassandra主目录下的start脚本启动服务。
停止:cassandra没有设计专门的停止服务命令
pgrep -u `whoami` -f cassandra | xargs kill -9
四、字符客户端简单操作 4.1客户端操作单节点:
linux下可直接使用命令登录
bin/cassandra-cli --host localhost
The command line client is interactive so if everything worked you should
be sitting in front of a prompt...
Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.
Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
[default@unknown]
出现以上信息说明此次登录成功。
带密码连接:
Cassandra主目录下输入bin/ cassandra-cli –h
[default@unknown] show cluster name ;
#查看cassandra集群的名字,可在cassandra.yaml中进行设置
[default@unknown] create keyspace zcb;
#创建一个名为zcb的密钥空间相当于mysql的database
[default@unknown] show keyspaces ; #查看keyspaces
#keyspace大致相当于关系数据库里的一个数据库。它会定义一个或多个列族,列族大致可以对应于关系数据库中的表。
[default@unknown] use zcb ; #进入keyspace
[default@zcb]create column family user; #创建一个名为user的列族
[default@zcb] describe zcb;
#查看zcb这个keyspace的描述信息和列族的定义
[default@zcb] create column family user with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;
#with后指定各种类型
[default@zcb]set user[‘student’][‘name’]=’abc’;
#在user列族中插入一个名为student的键值,列名为name,值为abc的数据
[default@zcb]get user[‘student’]; #查看键值student的数据
[default@zcb]count user[‘student’]; #统计列数
[default@zcb]del user [‘student’]; #删除列
[default@zcb]drop column family user; #删除列族
[default@zcb]drop keyspace zcb; #删除keyspace