安装
- 下载
URL:http://archive.apache.org/dist/cassandra/ - 解压
tar -xf /home/zhangjian/tools/cassandra-2.2.4.tar.gz - 配置环境变量
vim /etc/profile
export CASSANDRA_HOME=/home/zhangjian/tools/cassandra-2.2.4
export PATH= PATH: CASSANDRA_HOME/bin - 修改配置文件
listen_address: localhost
start_native_transport: true - 启动服务端
cassandra - 启动客户端
cqlsh
cassandra常用命令
查看表空间
describe keyspaces;查看已有表
describe tables;查看表结构
describe table table_name;创建keyspace
create keyspace keyspace_name;删除keyspace
drop keyspace keyspace_name;切换keyspace
use keyspace_name;创建表
create table table_name;
cassandra自带的命令工具
sstableloader
Usage:sstableloader -d directIP(目标IP) sstableFilePath
sstableloader是Cassandra自带的数据迁移工具,可以将外部数据(sstable文件)导入到Cassandra中,sstable文件就是Cassandra表数据从内存持久化到磁盘上的数据文件;
说明:-d是指定数据要导入到的cassandra新集群的入口ip,sstableFilePath是指定sstable文件在本地文件系统的存储路径;nodetool status
提供有关群集的信息,如状态、负载和IDS。
用法:nodetool < options > status ( -r | –resolve-ip ) - - < keyspace >
结果描述
- Status - U (up) or D (down)
指示节点是否正常运行。
特别的:如果显示“?N”,则很有可能节点之间不通,请检查网络问题或者防火墙。
State - N (normal), L (leaving), J (joining), M (moving)
与群集有关的节点的状态。Address
node的地址Load - updates every 90 seconds
不包括子目录的所有内容的快照后Cassandra的数据目录下的文件系统的数据量。因为所有的SSTable数据文件包含,不清理任何数据,像TTL过期的单元或设置了墓碑的数据)数。Tokens
每个节点(node)设置的tokens的数量Owns
每个数据中心节点所拥有的数据的百分比*复制因子。
例如,一个节点可以拥有33%的环,但显示100%,如果复制因子为3。
注意:如果您的群集使用具有不同的复制策略和复制的因素是keyspaces,
指定一个密钥空间当你运行nodetool状况得到有意义的所有权信息。Host ID
node的network IDRack
机架ID
此外,cassandra自带的常用工具还有:
cassandra-stress 用于Cassandra的压力测试
sstablescrub 删除集群中的冗余数据
sstablesplit 将大的sstable 分割成小的文件
sstablekeys 列出sstable中包含的关键字
sstable2json 以Json形式显示sstable中的内容
Cassandra数据迁移
cassandra数据迁移有好多种方法,只要你的sstable文件没有丢失,这里只讲述两种常见易用的方式:
- 第一种方式:copy命令
使用方法:适用于数据量小的情况下。
使用方式:
copy mykeyspace.mytable to ‘/home/db.csv’
这样就成功的把表mytable以csv的格式导出到了db.csv文件。
然后再另外一个集群中,建一个一模一样的表,然后使用
copy app12345.mytable from ‘/home/db.csv’
就把数据导入到了新的库中。
不过以上方式仅限于小数据量,当数据量一大,这个过程会持续很久,而且文件也会很大。
- 第二种方式:sstableloader工具。
在cassandra的bin目录下提供了一个sstableloader工具,这个工具专门用于把一个表的sstable文件导入到一个新的集群中。
假设你的表是mykeyspace.mytable。你的数据存一个10个节点组成的集群中,每个几点的数据都存在/disk/data1和/disk/data2目录下。
假设你的新集群的一个访问地址是192.168.2.1, 先在新集群建离相同名字的keyspace和表结构。
接下来只要在老集群的每个节点执行下面的命令:
bin/sstableloader -d 192.168.2.1 -u cassandra -pw cassandra -t 100 /disk/data1/mykeyspace/mytable
bin/sstableloader -d 192.168.2.1 -u cassandra -pw cassandra -t 100 /disk/data2/mykeyspace/mytable
其中-u是 用户名 -pw是密码 -t是限制流量100M/bps
等所有节点执行完毕,你的表数据就成功导入到了新的集群中,当然只要你的机器io和网络条件允许,你可以多个节点并发执行。