安装
> wget http://mirrors.hust.edu.cn/apache/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz
> tar -zxvf apache-cassandra-3.11.1-bin.tar.gz
Cassandra目录解释
- bin:一些可执行的命令,包括cqlsh和nodetool。nodetool可以用来检查一个集群是否配置正确或者是执行一系列的维护操作。还包括了几个对SSTables操作的工具,例如sstablekeys用来列出所有的SSTable的keys,sstableloader用来对SSTable进行导出和恢复,sstableupgrade用来对更新Cassandra版本。
- conf:配置文件目录,cassandra.yaml是主要的配置文件。logback.xml是修改log的配置文件。
- interface:只有一个文件cassandra.thrift,这个文件定义Thrift语法的RPC接口,Thrift接口可以用来创建JAVA,C++,PYTHON等客户端。但是呢,在4.0已经被删除掉了。
- javadoc:文档目录。
- lib:这个目录包含了运行Cassandra需要的所有external库。
- pylib:这个目录包含了使用cqlsh的Python库。
- tools:这个目录是一些用来维护Cassandra nodes的工具。
运行
运行前,确保你的JAVA_HOME已经配置完成。
> sudo vim /etc/environmen
=======
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
=======
> source /etc/environment
> echo $JAVA_HOME
启动服务:
> cd /opt/cassandra
> ./bin/cassandra -f
注:-f表示使Cassandra在前台运行而不是在后台运行。输出日志在./logs/system.log
停止服务:
> ./bin/stop-server
会打印出please read the stop-server script before use。
如果我们打开这个文件,会发现有2种办法停止服务。一种是通过启动Cassandra的时候用-p指定PID来停止。第二种是直接通过kill删除进程。
因为我们现在使用-f启动并没有指定PID,使用可以使用第二种方式停止服务。
运行CQL Shell
> ./bin/cqlsh
# 连接到一个指定的服务器
> ./bin/cqlsh localhost 9042
注:可以使用 CQLSHHOSTand CQLSH_PORT变量,他会覆盖命令行里面的参数。
基本用法
帮助:
cqlsh> help;
cqlsh> CREATE_TABLE help;
显示当前cluster:
cqlsh> DESCRIBE CLUSTER;
显示当前存在的keyspaces:
cqlsh> DESCRIBE KEYSPACES ;
这些system_traces system_schema system_auth system system_distributed自带的系统keyspaces是用来做内部管理的,有点和master,temp database类似。Cassandra使用这些keyspaces保存schema,tracing和security information。
显示版本:
cqlsh> SHOW VERSION;
使用keyspace和表
Cassandra keyspace和关系型数据库的概念类似。它可以定义一个或多个(表 or column families)。
在使用命令的时候记得常用tab,会有自动补齐功能。
创建keyspace:
cqlsh> CREATE KEYSPACE my_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};
cqlsh> DESCRIBE my_keyspace;
注:class代表使用什么作为replication策略,replication_factor表示这个keyspace的数据需要写到几个node上面去。在production的环境下面,一定不能只使用1个replication_factor。
切换到新建的keyspace:
cqlsh> USE my_keyspace ;
在新建的keyspace里面创建表:
cqlsh:my_keyspace> CREATE TABLE user ( first_name text, last_name text, PRIMARY KEY (first_name));
cqlsh:my_keyspace> DESCRIBE user ;
注:也可以直接使用 CREATE TABLE my_keyspace.user ( 这种语法创建表,不需要切换keyspace。
插入数据到表中:
cqlsh:my_keyspace> INSERT INTO user (first_name, last_name ) VALUES ( 'zhe', 'xiao');
cqlsh:my_keyspace> SELECT * FROM user ;
cqlsh:my_keyspace> DELETE last_name FROM user WHERE first_name = 'zhe';
cqlsh:my_keyspace> select * from user ;
cqlsh:my_keyspace> DELETE FROM user WHERE first_name = 'zhe';
清空或者删除表:
cqlsh:my_keyspace> TRUNCATE user ;
cqlsh:my_keyspace> DROP TABLE user ;