cassandra集群安装

gyunling 2013-08-02

gzip-dapache-cassandra-1.2.6-bin.tar.gz

tarxvfapache-cassandra-1.2.6-bin.tar

单机安装配置

1.配置log4j-server.properties

需要配置log4j.appender.R.File=/market/cassandra/apache-cassandra-1.2.6/log/cassandra.log

2.配置data_file_directories:存放数据库数据文件的目录路径(不是文件路径)

data_file_directories:/market/cassandra/apache-cassandra-1.2.6/data

commitlog_directory:存放提交日志的目录路径。

commitlog_directory:/market/cassandra/apache-cassandra-1.2.6/commitlog

saved_caches_directory:缓存文件夹路径

saved_caches_directory:/market/cassandra/apache-cassandra-1.2.6/saved_caches

3.启动cassandra

cd../bin

./cassandra-f

集群安装配置

cluster_name:集群名,所有集群里的节点,这个配置必须相同默认'TestCluster'

seeds:这是种子节点。

172.21.1.36

cassandra是一个p2p式的分布式数据库,没有所谓的中心节点。但为了保证节点能找到集群,你必须告诉它至少一台已经在集群内的节点IP。这样通过这个节点,它能找到集群内的所有节点,为了保证健壮性,尽量将集群里所有节点的seeds配置成一样的

seeds:'172.21.1.36,172.21.0.36,172.21.3.172'

listen_address:其它节点与自己通信的IP,这里必须设置为自己的主机IP。若设置为localhost或127.0.0.1,则可能其它节点无法与自己通信。

listen_address:172.21.1.36

rpc_address:这里设置其它节点上的客户端能否与自己的服务端通信。设置为0.0.0.0表示任何节点上的客户端都可以与自己通信,否则只允许本机客户端与自己通信

rpc_address:0.0.0.0

启动./cassandra,报错

xss=-ea-XX:+UseThreadPriorities-XX:ThreadPriorityPolicy=42-Xms1715M-Xmx1715M-Xmn100M-XX:+HeapDumpOnOutOfMemoryError-Xss180k

[market@172-21-1-36bin]$Error:Exceptionthrownbytheagent:java.rmi.server.ExportException:Portalreadyinuse:7199;nestedexceptionis:

java.net.BindException:Addressalreadyinuse

cassandra未关闭

netstat-an|grep':7199'

kill-9进程id

nodetool是一个查看集群信息的命令,运行nodetool需要指定host和port,port默认是8080,这个端口是Cassandra的jmx端口,nodetool通过jmx获取集群的信息,端口可以在bin/cassandra.in.sh中修改.

ring命令用于查看集群的节点信息,ring来源于consistenthash,在consistenthash中,各个节点组成一个环,通常称为ring。

ring命令的输出中包括当前集群的节点,各个节点的状态(Up还是Down),节点的load(数据量),节点在ring上的位置等信息

./nodetool-h172.21.3.172ring

cfstats命令

cfstats—查看各个columnfamily的详细信息,包括读写次数、响应时间、memtable、sstable等

./nodetool-h172.21.3.172cfstats

tpstats命令

tpstats命令输出当前集群的各种连接池的使用状态.包括数据一致性,消息池,提交池,内存表提交池,写操作的池等等

./nodetool-h172.21.3.172tpstats

./nodetool-h172.21.3.172info

flush命令或repair命令

flush命令是将某keyspace中的缓存区数据提交,所以必须有在flush命令后提交一个keySpace的参数,否则命令不能执行.

Java代码

[root@vm129bin]#./nodetool-h172.21.3.172flushsystem

命令行,所有命令都要以;结束

./cassandra-cli-h172.1.3.172

cd命令切换到Cassandra的bin目录下,./cassandra-cli启动cassandra-cli。

connect172.21.3.172/9160;连接本地机器所在的集群

showkeyspaces;显示集群中现有的keyspaceusexxxx;

进入keyspacexxxx

createcolumnfamilyxxxx;创建columnfamilyxxxx

dropkeyspacexxxx;删除keyspacexxxx

createkeyspacexxxx;创建keyspacexxxx

usekeyspace打开keyspace(类似数据库中库)

showschema显示该库中的表结构

listcolumnFamily查看表的数据集

setcolumnFamily[rowKey][column]=columnValue插入指定的key和列的值

getcolumnFamily[rowKey]:取得指定表和key的数据

//创建库

CREATEKEYSPACEtestDb

withplacement_strategy='SimpleStrategy'

andstrategy_options={replication_factor:3};//复制因子为3份

创建表

createcolumnfamilycustGroupswithcolumn_type='Standard'andcomparator='UTF8Type'anddefault_validation_class='BytesType'andkey_validation_class='UTF8Type'ANDcolumn_metadata=[{column_name:phoneNo,validation_class:'UTF8Type',index_type:KEYS},{column_name:custId,validation_class:'UTF8Type',index_type:KEYS},{column_name:custName,validation_class:'UTF8Type',index_type:KEYS}];

相关推荐