[转]部署Cassandra集群

转自若海的blog,具体地址记不得了。其实跟官网的内容差不多,算是汉化且操作部署过吧。

 

部署Cassandra集群

要熟悉一个系统,个人认为最好的办法是先把这个系统run起来,对系统有个直观的了解。比如一个存储系统,就可以看看它创建了哪些目录、文件,看看系统的log等。

这篇文章介绍怎样部署一个Cassandra集群,包括从下载、配置到部署。并简单介绍了一些Cassandra附带的工具的使用方法。

下载和解压

从apache站点下载 Cassandra,地址是:http://cassandra.apache.org/download/

下载什么版本

现在Cassandra有两个版本,0.5.1和0.6.0-rc1,0.5.1是release版本,但是稳定性并没有想象中的那么好,比如配置备份数为2的时候就发生过异常。而且当前开发人员的大部分精力都已经集中在0.6和后续的版本上了,所以还是推荐直接下载0.6的版本,因为已经是rc了,所以没有太大的问题。在现在页面选择apache-cassandra-0.6.0-rc1-bin.tar.gz,会进入镜像选择页面,推荐选择renren网的镜像,这里表扬一下renren网,镜像的速度非常快,至少在我这里是这样。

下载后得到的文件是apache-cassandra-0.6.0-rc1- bin.tar.gz,用下面的命令解压

$ tar -zxf apache-cassandra-0.6.0-rc1-bin.tar.gz
Cassandra二进制包的目录结构

解压后目录下除了一些说明、license文件外,包含以下目录:

目录说明
bin存放操作Cassandra脚本
conf存放配置文件的目录
interfaceCassandra的Thrift接口定义文件,可以用于生成各种语言的接口代码
javadoc源代码的javadoc,这个建议在部署集群的时候删除,比较大,运行时不需要
libCassandra运行时依赖的包
部署
部署前的准备

Cassandra使用Java开发,所以部署的机器上需要安装JDK。推荐安装最新版本的JDK。除了JDK外,Cassandra没有其他依赖了。

配置文件修改

默认的日志和数据文件都存放在/var下,这需要超级用户权限才能创建,所以通常我把它修改到用户的主目录下,需要修改的地方包括:

  • log4j日志文件路径,位于conf/log4j.properties中,将log4j.appender.R.File项修改为你希望的路径,比如:/home/ruohai/var/cassandra/system.log
  • CommitLog路径,位于conf/storage-conf.xml的CommitLogDirectory
  • 数据文件路径,位于conf/storage-conf.xml的DataFileDirectories中

除了文件的路径外,我们还需要修改服务监听的地址,包括ListenAddress和ThriftAddress,配置文件默认监听的都是localhost,这些配置也都位于conf/storage-conf.xml文件中。

如果你想修改jvm的参数,比如内存大小,可以在bin目录下的cassandra.in.sh中找到。

修改后conf/storage-conf.xml文件看上去应该像这样:

<CommitLogDirectory>/home/ruohai/var/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
        <DataFileDirectory>/home/ruohai/var/cassandra/data</DataFileDirectory>
</DataFileDirectories>

<!-- Cassandra节点之间通信的监听地址,这里设置为空,让Cassandra自己使用InetAddress.getLocalHost()去获取地址 -->
<ListenAddress></ListenAddress>
<!-- 这个是Thrift监听的地址,建议设置为0.0.0.0 -->
<ThriftAddress>0.0.0.0</ThriftAddress>
启动单节点

进入bin目录,执行下面命令启动单个节点:

$ ./cassandra
启动多节点集群

在启动多节点集群前,除了刚才修改的配置项外,还有一项需要修改,那就是为集群指定seeds。

Cassandra没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息。为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信。种子节点可以指定多个,通过在conf/storage-conf.xml中的seeds属性配置。

比如我要启动的集群包括192.168.1.1 – 192.168.1.8,那么我可以指定种子节点为:

<Seeds>
 <Seed>192.168.1.1</Seed>
 <Seed>192.168.1.5</Seed>
</Seeds>

配置了seeds信息后,就可以启动各个节点了,启动方法和启动单个节点一样,也是执行bin目录下的cassandra脚本。

使用Cassandra附带的脚本和集群交互

Cassandra附带了一些脚本,可以用于和集群交互,常用的有nodetool和cassandra-cli两个。

nodetool

nodetool是一个很强大的工具,这里只简单介绍一些查看集群信息的命令,详细的命令可以参见工具的帮助信息。

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

ring命令

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

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

$ ./nodetool -host 192.168.1.2 -port 8080 ring

Address       Status     Load          Range                                      Ring
168284559435902509512840950520136104633
192.168.1.6   Up         725 bytes     36700049424802292574986974699889333152     |<–|
192.168.1.4   Up         725 bytes     45197454859393203424758350502301999985     |   ^
192.168.1.2   Up         1.06 KB       70289627796959232119663916763545648891     v   |
192.168.1.3   Up         725 bytes     86978082336750239587912071897375514499     |   ^
192.168.1.7   Up         1.09 KB       94473247289709371297029329870554724753     v   |
192.168.1.5   Up         725 bytes     132989832607711424907752773015685901277    |   ^
192.168.1.1   Up         725 bytes     137175077128468538539167579258866491451    v   |
192.168.1.8   Up         1.08 KB       168284559435902509512840950520136104633    |–>|

info命令

info命令用于显示一个节点的信息,包括当前的load(数据量),运行时间,内存使用情况等。

$ ./nodetool -host 192.168.1.2 -port 8080 info
70289627796959232119663916763545648891
Load             : 0 bytes
Generation No    : 1270871149
Uptime (seconds) : 323
Heap Memory (MB) : 34.39 / 3071.38
cfstats

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

cassandra-cli

cassandra-cli是一个很好用的客户端命令行,它使用thrift和服务器通信,能完成get/put/remove操作,并能查看配置信息,keyspace描述等。更为难得的是,这个使用java写的工具支持命令补全、历史命令等特性,这归功于开发人员使用了jline 这个包。

cassandra-cli需要提供两个参数,host和port,这里的port是thrift的监听端口,默认是9160。

下面显示一些基本的用法,进去cli后,输入? 获取详细的帮助信息。

$ ./cassandra-cli -host 192.168.1.2 -port 9160
Connected to: “Test Cluster” on 192.168.1.2/9160
Welcome to cassandra CLI.

Type ‘help’ or ‘?’ for help. Type ‘quit’ or ‘exit’ to quit.
cassandra> show cluster name
Test Cluster
cassandra> show keyspaces
Keyspace1
system
definitions
cassandra> set Keyspace1.Standard

set Keyspace1.Standard1 set Keyspace1.Standard2 set Keyspace1.StandardByUUID1
cassandra> set Keyspace1.Standard1['key_1']['column_1'] = ‘value_1′
Value inserted.
cassandra> set Keyspace1.Standard1['key_1']['column_2'] = ‘value_2′
Value inserted.
cassandra> set Keyspace1.Standard1['key_2']['column_1'] = ‘value_1′
Value inserted.
cassandra> get Keyspace1.Standard1['key_1']
=> (column=636f6c756d6e5f32, value=value_2, timestamp=1270873106569000)
=> (column=636f6c756d6e5f31, value=value_1, timestamp=1270873099998000)
Returned 2 results.
cassandra> count Keyspace1.Standard1['key_1']
2 columns
cassandra> del Keyspace1.Standard1['key_1']['column_1']
column removed.
cassandra> count Keyspace1.Standard1['key_1']
1 columns
cassandra> get Keyspace1.Standard1['key_1']
=> (column=636f6c756d6e5f32, value=value_2, timestamp=1270873106569000)
Returned 1 results.
cassandra> quit

{完}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值