Cassandra的bin目录下有两个很好用的工具nodetool和cassandra-cli。
[size=large][color=blue]一.nodetool工具[/color][/size]
nodetool是一个查看集群信息的命令,运行nodetool需要指定host和port,port默认是8080,这个端口是Cassandra的jmx端口,nodetool通过jmx获取集群的信息,端口可以在bin/cassandra.in.sh中修改.
nodetool的java解析类: java org.apache.cassandra.tools.NodeCmd
命令执行格式:nodetool -host 服务器IP -port 端口号 <command>
[size=medium]king命令[/size]
ring命令用于查看集群的节点信息,ring来源于consistent hash,在consistent hash中,各个节点组成一个环,通常称为ring。
ring命令的输出中包括当前集群的节点,各个节点的状态(Up还是Down),节点的load(数据量),节点在ring上的位置等信息
[size=medium]info命令[/size]
info命令用于显示一个节点的信息,包括当前的load(数据量),运行时间,内存使用情况等。
[code="java"]
# ./nodetool -h localhost -p 10036 info
16366895315811089625572228179498200556
Load : 495 bytes
Generation No : 1281008217
Uptime (seconds) : 1259
Heap Memory (MB) : 40.93 / 1021.94
[/code]
cfstats命令
cfstats — 查看各个column family的详细信息,包括读写次数、响应时间、memtable、sstable等。
[code="java"]
# ./nodetool -h localhost -p 10036 cfstats
Keyspace: Keyspace1
Read Count: 0
Read Latency: NaN ms.
Write Count: 0
Write Latency: NaN ms.
Pending Tasks: 0
Column Family: StandardByUUID1
........................
[/code]
[size=medium]tpstats命令[/size]
tpstats命令输出当前集群的各种连接池的使用状态.包括数据一致性,消息池,提交池,内存表提交池,写操作的池等等.
[code="java"]
# ./nodetool -h localhost -p 10036 tpstats
Pool Name Active Pending Completed
LB-TARGET 0 0 0
CONSISTENCY-MANAGER 0 0 0
MESSAGE-STREAMING-POOL 0 0 0
FLUSH-SORTER-POOL 0 0 0
LB-OPERATIONS 0 0 0
MEMTABLE-POST-FLUSHER 0 0 2
FLUSH-WRITER-POOL 0 0 2
MESSAGE-DESERIALIZER-POOL 0 0 0
[/code]
[size=medium]flush命令或repair命令[/size]
flush命令是将某keyspace中的缓存区数据提交,所以必须有在flush命令后提交一个keySpace的参数,否则命令不能执行.
[code="java"]
# ./nodetool -h localhost -p 10036 flush system
[/code]
[size=medium]drain命令[/size]
drain命令是当数据写入某个node时,如果该集群节点不能写入时,将数据暂时写入memtables和replays commitlog.
[code="java"]
# ./nodetool -h localhost -p 10036 drain
[/code]
[size=medium]decommission命令[/size]
decommission命令将当前节点中的数据转移到其它的集群节点中,解除当前节点的对外服务
[size=medium]move命令[/size]
move命令将当前节点中的数据转移到另一个指定的集群节点.
[size=medium]loadbalance命令[/size]
上传当前节点的所有数据到其它集群节点中,并将读取节点的请求转发到ring中的其它节点中.
[size=medium]setcachecapacity命令[/size]
设置keySpace和column family的缓存能力,需要提交四个参数(后两个参数是数值型):
keySpace名称,colum falimy名称,keycache数值,rowCache数值
[size=large][color=blue]二.cassandra-cli工具[/color][/size]
cassandra-cli是一个很好用的客户端命令行,它使用thrift API和服务器进行通信,能完成get/put/remove操作,并能查看配置信息,keyspace描述等。更为难得的是,这个使用java写的工具支持命令补全、历史命令等特性,这归功于开发人员使用了jline 这个包。
cassandra-cli需要提供两个参数,host和port,这里的port是thrift的监听端口,默认是9160,这个监听端口和前文提到的10036是不同的监听端口.所以不要混淆.稍后我会补一个图上来,简单解释一下这两个端口提供的服务有什么区别.
java类:org.apache.cassandra.cli.CliMain(大家可以翻看一下源码),大家有兴趣可以包装这个客户端,将整个操作界面化,增加易用性,哈哈!
[code="java"]
# ./cassandra-cli
Welcome to cassandra CLI.
Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
cassandra> connect localhost/9160
Connected to: "Test Cluster" on localhost/9160
cassandra> show cluster name
Test Cluster
cassandra> set Keyspace1.Standard2['employee']['name'] = 'limingjie'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['age'] = '30'
Value inserted.
cassandra> set Keyspace1.Standard2['employee_1']['name'] = '孙悟空'
Value inserted.
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=employee, timestamp=1270873106569000)
=> (column=age, value=30, timestamp=1270873099998000)
Returned 2 results.
cassandra> count Keyspace1.Standard2['employee']
2 columns
cassandra> del Keyspace1.Standard2['employee']['age']
column removed.
cassandra> count Keyspace1.Standard2['employee']
1 columns
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=limingjie, timestamp=1270873106569000)
Returned 1 results.
cassandra> quit
[/code]
[size=large][color=blue]一.nodetool工具[/color][/size]
nodetool是一个查看集群信息的命令,运行nodetool需要指定host和port,port默认是8080,这个端口是Cassandra的jmx端口,nodetool通过jmx获取集群的信息,端口可以在bin/cassandra.in.sh中修改.
nodetool的java解析类: java org.apache.cassandra.tools.NodeCmd
命令执行格式:nodetool -host 服务器IP -port 端口号 <command>
[size=medium]king命令[/size]
ring命令用于查看集群的节点信息,ring来源于consistent hash,在consistent hash中,各个节点组成一个环,通常称为ring。
ring命令的输出中包括当前集群的节点,各个节点的状态(Up还是Down),节点的load(数据量),节点在ring上的位置等信息
[size=medium]info命令[/size]
info命令用于显示一个节点的信息,包括当前的load(数据量),运行时间,内存使用情况等。
[code="java"]
# ./nodetool -h localhost -p 10036 info
16366895315811089625572228179498200556
Load : 495 bytes
Generation No : 1281008217
Uptime (seconds) : 1259
Heap Memory (MB) : 40.93 / 1021.94
[/code]
cfstats命令
cfstats — 查看各个column family的详细信息,包括读写次数、响应时间、memtable、sstable等。
[code="java"]
# ./nodetool -h localhost -p 10036 cfstats
Keyspace: Keyspace1
Read Count: 0
Read Latency: NaN ms.
Write Count: 0
Write Latency: NaN ms.
Pending Tasks: 0
Column Family: StandardByUUID1
........................
[/code]
[size=medium]tpstats命令[/size]
tpstats命令输出当前集群的各种连接池的使用状态.包括数据一致性,消息池,提交池,内存表提交池,写操作的池等等.
[code="java"]
# ./nodetool -h localhost -p 10036 tpstats
Pool Name Active Pending Completed
LB-TARGET 0 0 0
CONSISTENCY-MANAGER 0 0 0
MESSAGE-STREAMING-POOL 0 0 0
FLUSH-SORTER-POOL 0 0 0
LB-OPERATIONS 0 0 0
MEMTABLE-POST-FLUSHER 0 0 2
FLUSH-WRITER-POOL 0 0 2
MESSAGE-DESERIALIZER-POOL 0 0 0
[/code]
[size=medium]flush命令或repair命令[/size]
flush命令是将某keyspace中的缓存区数据提交,所以必须有在flush命令后提交一个keySpace的参数,否则命令不能执行.
[code="java"]
# ./nodetool -h localhost -p 10036 flush system
[/code]
[size=medium]drain命令[/size]
drain命令是当数据写入某个node时,如果该集群节点不能写入时,将数据暂时写入memtables和replays commitlog.
[code="java"]
# ./nodetool -h localhost -p 10036 drain
[/code]
[size=medium]decommission命令[/size]
decommission命令将当前节点中的数据转移到其它的集群节点中,解除当前节点的对外服务
[size=medium]move命令[/size]
move命令将当前节点中的数据转移到另一个指定的集群节点.
[size=medium]loadbalance命令[/size]
上传当前节点的所有数据到其它集群节点中,并将读取节点的请求转发到ring中的其它节点中.
[size=medium]setcachecapacity命令[/size]
设置keySpace和column family的缓存能力,需要提交四个参数(后两个参数是数值型):
keySpace名称,colum falimy名称,keycache数值,rowCache数值
[size=large][color=blue]二.cassandra-cli工具[/color][/size]
cassandra-cli是一个很好用的客户端命令行,它使用thrift API和服务器进行通信,能完成get/put/remove操作,并能查看配置信息,keyspace描述等。更为难得的是,这个使用java写的工具支持命令补全、历史命令等特性,这归功于开发人员使用了jline 这个包。
cassandra-cli需要提供两个参数,host和port,这里的port是thrift的监听端口,默认是9160,这个监听端口和前文提到的10036是不同的监听端口.所以不要混淆.稍后我会补一个图上来,简单解释一下这两个端口提供的服务有什么区别.
java类:org.apache.cassandra.cli.CliMain(大家可以翻看一下源码),大家有兴趣可以包装这个客户端,将整个操作界面化,增加易用性,哈哈!
[code="java"]
# ./cassandra-cli
Welcome to cassandra CLI.
Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
cassandra> connect localhost/9160
Connected to: "Test Cluster" on localhost/9160
cassandra> show cluster name
Test Cluster
cassandra> set Keyspace1.Standard2['employee']['name'] = 'limingjie'
Value inserted.
cassandra> set Keyspace1.Standard2['employee']['age'] = '30'
Value inserted.
cassandra> set Keyspace1.Standard2['employee_1']['name'] = '孙悟空'
Value inserted.
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=employee, timestamp=1270873106569000)
=> (column=age, value=30, timestamp=1270873099998000)
Returned 2 results.
cassandra> count Keyspace1.Standard2['employee']
2 columns
cassandra> del Keyspace1.Standard2['employee']['age']
column removed.
cassandra> count Keyspace1.Standard2['employee']
1 columns
cassandra> get Keyspace1.Standard2['employee']
=> (column=name, value=limingjie, timestamp=1270873106569000)
Returned 1 results.
cassandra> quit
[/code]