PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
Cassandra配置集群,php扩展Cassandra,Cassandra常用cqlsh的一些命令,以及写入性能测试
原创杂文 / 时间:2016-02-05 14:50:47 / 阅读:1808 / 分享:1

        Cassandra是列式数据库,支持分布式等,关于一系列Cassandra的功能和说明请去官网:http://cassandra.apache.org/

实战系统环境:centos6.5 


下载地址:wget http://mirrors.cnnic.cn/apache/cassandra/3.0.1/apache-cassandra-3.0.1-bin.tar.gz


Cassandra配置依赖python,首先升级python2.7,具体操作如下:

wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz

tar -zxvf Python-2.7.6.tgz

cd Python-2.7.6

./configure && make && make install

mv /usr/bin/python /usr/bin/python2.6

ln -s /usr/local/bin/python2.7 /usr/bin/python

python -V


然后下面配置Cassandra集群:

我的所有的目录都在/usr/local/apache-cassandra-3.0.1

配置文件修改:conf/cassandra.yaml

seeds: "192.168.182.129,192.168.182.128"  ###集群的中心节点

listen_address: 192.168.182.129   ###监听地址,配置节点之前通信的IP地址

rpc_address: 0.0.0.0  ###客户端(应用程序)访问的IP地址

broadcast_rpc_address: 192.168.182.129 ###服务器对外提供服务的地址



其他文件目录配置:

data_file_directories: /data0/cassandra/data/data

hints_directory: /data0/cassandra/data/hints

commitlog_directory: /data0/cassandra/data/commitlog

saved_caches_directory: /data0/cassandra/data/saved_caches


其他配置可以根据说明自己配置,关键一点英语很重要,要自己去看懂,我这里简要说这些。


后台启动:

/usr/local/apache-cassandra-3.0.1/bin/cassandra


php扩展:

首先安装libuv库,cpp_driver就行

下载地址在这:

http://downloads.datastax.com/

报错信息:

checking for cass_cluster_new in -lcassandra... no

configure: error: Unable to load libcassandra

这个错误,要么扩展没装,要么是扩展的路径不对


1:cassandra-1.0.1.tgz安装

2:php-driver 安装

git clone https://github.com/datastax/php-driver.git

cd php-driver

git submodule update --init

cd ext

./install.sh


详细地址:https://github.com/datastax/php-driver/blob/master/ext/README.md



cqlsh命令:

所有的命令最好以分号结束,不然可能会有其他意外情况发生

describe keyspaces;

desc cluster;

desc keyspaces;

desc keyspace portfoliodemo;

desc tables;

desc table stocks;


其他的命令和mysql基本都类似,可以多试试。



Cassandra性能单进程,我写过10w 100w 的数据  三个字段。


php代码如下:


$t1 = microtime_float();


$cluster   = Cassandra::cluster()->build();

$keyspace  = 'mykeyspace';

$session   = $cluster->connect($keyspace);


for($i = 0;$i < 100;$i++){

$userid = rand(10000,1000000);

$fname = 'user'.($i+1);

$lname = 'luser'.($i+1);

$insertQuery = "insert into users (user_id,fname,lname) values ($userid,'".$fname."','".$lname."')";

$statement   = new Cassandra\SimpleStatement($insertQuery);

$options     = new Cassandra\ExecutionOptions(array('consistency' => Cassandra::CONSISTENCY_ALL));

$session->execute($statement, $options);


}


$t2 = microtime_float();


echo $t2 - $t1;


function microtime_float(){

return microtime(true);

}



单进程插入差不多1000条/s。



最后,然后就没有了。研究了比较长时间,结论没多少。有兴趣的凑合着看。有问题可以联系我。

微博:http://weibo.com/lizhi10000


关于作者
按时间分类