R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库。涉及的NoSQL产品,包括Redis,MongoDB, HBase, Hive, Cassandra, Neo4j。希望通过我的介绍让广大的R语言爱好者,有更多的开发选择,做出更多地激动人心的应用。
关于作者:
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
email: [email protected]
转载请注明:
cassandra/">http://blog.fens.me/nosql-r-cassandra/
第三篇 R利剑Cassandra,分为7个章节。
Cassandra介绍
Cassandra安装
RCassandra安装
RCassandra函数库
RCassandra基本使用操作
RCassandra使用案例
Cassandra的没落
每一章节,都会分为”文字说明部分”和”代码部分”,保持文字说明与代码的连贯性。
1. Cassandra介绍
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
Cassandra 的名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字,因此项目的Logo是一只放光的眼睛。
Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。
Cassandra介绍摘自:维基百科(http://zh.wikipedia.org/wiki/Cassandra)
2. Cassandra安装
文字说明部分:
首先环境准备,这里我选择了Linux Ubuntu操作系统12.04的64位服务器版本,大家可以根据自己的使用习惯选择顺手的Linux。
JDK使用SUN官方版本JDK 1.6.0_29,请不要用Linux自带的openjdk。
手动下载并安装Cassandra。
Cassandra配置,需要提前初始化几个目录。
data_file_directories:为数据文件目录
commitlog_directory:为日志文件目录
saved_caches_directory:为缓存文件目录
下面将介绍单节点的安装,集群安装请参考:Cassandra单集群实验2个节点
代码部分:
单节点安装:系统环境 Linux Ubuntu 12.04 LTS 64bit server
~ -a
Linux u1 .0-23-generic
~ /etc/issue
Ubuntu .2 LTS n l
JDK环境:SUN官方JDK 1.6.0_29
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
下载Cassandra并解压
~ http://mirrors.tuna.tsinghua.edu.cn/apache/cassandra/1.2.5/apache-cassandra-1.2.5-bin.tar.gz
~ xvf apache-cassandra-1.2.5-bin.tar.gz
~ apache-cassandra-1.2.5-bin cassandra125
~ cassandra125 /home/conan/toolkit/
~
/home/conan/toolkit
~ -l
drwxrwxr-x conan conan Jun 06:10 cassandra125/
drwxr-xr-x conan conan Apr :36 jdk16
初始化cassandra
~ /home/conan/toolkit/cassandra125
~ conf/cassandra.yaml
data_file_directories:
- /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches
目录的介绍:
data_file_directories:为数据文件目录
commitlog_directory:为日志文件目录
saved_caches_directory:为缓存文件目录
确认操作系统中,这几个目录已被创建。
同时确认/var/log/cassandra/目录,对于cassandra是可写的。
~ -p /var/lib/cassandra/data
~ -p /var/lib/cassandra/saved_caches
~ -p /var/lib/cassandra/commitlog
~ -p /var/log/cassandra/
~ -R conan:conan /var/lib/cassandra
~ -R conan:conan /var/log/cassandra/
~ ll /var/lib/cassandra
drwxr-xr-x conan conan Jun 06:21 commitlog/
drwxr-xr-x conan conan Jun 06:21 data/
drwxr-xr-x conan conan Jun 06:21 saved_caches/
设置环境变量
~ /etc/environment
/home/conan/toolkit/cassandra125
~ /etc/environment
~ /home/conan/toolkit/cassandra125
-x
-x
-x
启动cassandra
~ bin/cassandra -f
~ jps
CassandraDaemon
Jps
打开客户端
~ bin/cassandra-cli
Connected to: on .0.1/9160
Welcome to Cassandra CLI version .5
Type or help.
Type or to quit.
default@unknown
单节的cassandra,我们已经成功能安装好了。
Cassandra的集群安装请参考:Cassandra单集群实验2个节点
3. RCassandra安装
文字说明部分:
R语言的版本请使用2.15.3,下面介绍如何安装R。
首先,增加一个软件源deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/。
更新及指定安装2.15.3-1precise0precise1版本。
启动R程序,安装RCassandra包。
代码部分
测试环境R语言的版本是:2.15.3
安装R语言
~ /etc/apt/sources.list
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/
更新apt-get源
~ update
~ r-base-core.3-1precise0precise1
~ R
R version .3 -03-01 --
Copyright C The R Foundation Statistical Computing
ISBN -900051-07-0
Platform: x86_64-pc-linux-gnu -bit
R is software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type or distribution details.
Natural language support but running an English locale
R is a collaborative project with many contributors.
Type information and
on how to cite R or R packages publications.
Type some demos, on-line help, or
an HTML browser interface to help.
Type to quit R.
安装RCassandra
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
0
4. RCassandra函数库
文字说明部分
列出有的RCassandra支持的函数,只有17个。记得rredis有100个函数,rmongodb有153个函数。相比之下RCassandra太轻量了。
但是这17个函数,并没有覆盖Cassandra的所有操作,就连一些的基本的操作都没有函数支持,要在命令行处理。不知道是什么原因?!希望RCassandra能继续发展,完善没有实现的功能函数。
不支持的常用操作:
创建keyspaces,删除keyspaces
创建列族,删除列族
删除一行
删除一行的某列数据
下面列出了这17个函数,并与Cassandra的命令做了对比说明。
代码部分
共有17个函数
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
1
Cassandra和RCassandra的基本操作对比:
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
2
5. RCassandra基本使用操作
文字说明部分
介绍RCassandra的基本函数操作,以iris的数据集为例,介绍了如何利用RCassandra操作Cassandra数据库。
代码部分
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
3
不支持的常用操作
创建keyspaces,删除keyspaces
创建列族,删除列族
删除一行
删除一行的某列数据
6. RCassandra使用案例
文字说明部分
通过一个业务需求的例子,加深我们对RCassandra的认识。下面是一个非常简单的业务场景。
业务需求:
创建一个Users列族,包含name,password两列
在已经数据的情况下,有动态增加一个新列age
代码部分
在Cassandra命令行,创建列族Users
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
4
RCassandra插入数据,包含name,password两列
~ java -version
java version
JavaTM SE Runtime Environment build .0_29-b11
Java HotSpotTM -Bit Server VM build -b02, mixed mode
5
7. Cassandra的没落
越来越多的基于cassandra构建的应用,开始向hbase迁移。
Cassandra的没落,在技术上可能存在的一些原因:
1. 读的性能太慢
无中心的设计,造成读数据时通过逆熵做计算,性能损耗很大,甚至会严重影响服务器运作。
2. 数据同步太慢(最终一致性延迟可能非常大)
由于无中心设计,要靠各节点传递信息。相互发通知告知状态,如果副本集有多份,其中又出现节点有宕机的情况,那么做到数据的一致性,延迟可能非常大,效率也很低的。
3. 用插入和更新代替查询,缺乏灵活性,所有查询都要求提前定义好。
与大多数数据库为读优化不同,Cassandra的写性能理论上是高于读性能的,因此非常适合流式的数据存储,尤其是写负载高于读负载的。与HBase比起来,它的随机访问性能要高很多,但不是很擅长区间扫描,因此可以作为HBase的即时查询缓存,由HBase进行批量的大数据处理,由Cassandra提供随机查询的接口
4. 不支持直接接入hadoop,不能实现MapReduce。
现在大数据的代名词就是hadoop,做为海量数据的框架不支持hadoop及MapReduce,就将被取代。除非Cassandra能够给出其他的定位,或者海量数据解决方案。DataStax公司,正在用Cassandra重够HDFS的文件系统,不知道是否可以成功。
让我期待Cassandra未来的发展吧!
转载请注明:
http://blog.fens.me/nosql-r-cassandra/
This entry was posted in R语言实践, 数据库
还没有评论,来说两句吧...