Cassandra学习笔记
- 博客分类:
- 技术杂绘
Cassandra学习笔记
2011年11月16日
http://cassandra.apache.org/
http://java.net/projects/jna/downloads
特点:弱一致性(可调一致性),分布式(自动切片)、无中心(自动协调节点操作),高可用性(副本因子决定数据在集群中的多个节点复制,副本放置策略可以决定副本存于本数据中心、或另一数据中心和 本中心的其他机架、或其他数据中心和本中心的其他机架)。
转变思维:使用丰富有意义的列名、以查询模型为中心建模(而不是一数据模型为中心建模,SQL)、一行之中有很多列对cassandra来说是家常便饭,在cassandra0.7中,每行可以容纳20亿列之多。每行有key、海量的column。
应用场景:大规模部署(分布式,可单节点部署,但体现不出优势)、写密集。
数据模型:cluster、keyspace、column family、row、column/super column。
Cassandra分布式使用gossip协议通讯,使用Phi增量故障检测算法对节点进行检测。增量故障检测机制不是简单的判定节点离线/在线,而是给出离线“嫌疑”。通过指定 “嫌疑”度,调整故障检测的灵敏度。
Cassandra使用“墓碑”软删除。
[ClusterName]
[Keyspace][ColumnFamily][RowKey][SuperColumn][Column]
列族选项:
column_type Standard | Super
clock_type Timestamp
comparator AsciiType、BytesType、LexicalUUIDType、IntegerType、LongType、TimeUUIDType、UTF8Type
subcomparator
reconciler Timestamp
comment 备注
rows_cached 行缓存数量
preload_row_cache 自动加载行缓存
key_cache_size 缓存的键值数量
read_repair_chance 0.0~1.0
分区器,指定行键值排序和影响数据在节点的分布:
随机分区器
有序分区器
配页有序分区器
字节序风分区器
分布式的一致性:
顺序一致性(严格一致性)
因果一致性
最终一致性(弱一致性)
数据库大观:
关系数据库
对象数据库 Cache(InterSystems)
XML数据库 Tamino(SoftwareAG)、Berkeley XML DB(Oracle)
文档数据库 Lotus(IBM)、CouchDB(Apache)、MongoDB、Riak
图数据库 FlockDB(Twitter)
键值存储与分布式哈希表 Dynamo(Amazon) 、SimpleDB、Dynomite(Microsoft)、Redis(VMWare)、MemcacheD、MemcacheDB
列数据库 Bigtable(Google)、HBase(Aapche)、Hypertable、Cassandra(Apache)
CAP理论
JAN.tar放入./lib目录
启动
./bin/cassandra -f
客户端
./bin/cassandra-cli
] help
] connect /
port:9160
] show cluster name
默认:Test
] show keyspaces
默认:system
] show api version
] create keyspace mykeyspace with replication_factor=1;
] describe mykeyspace;
] drop keyspace mykeyspace;
] use mykeyspace
] create column family user
] drop column family user;
] rename keyspace mykeyspace newkeyspace
] rename column family user newuser;
] set user['user1']['fname']='user1'
] count user['user1']
] get user['user1']
] del user['user1']['fname']
] del user['user1']
按键取全部列
按键取指定列
按键取指定分片区间列(以列族排序为准:AsciiType、BytesType、LexicalUUIDType、IntegerType、LongType、TimeUUIDType、UTF8Type、)
配置文件
cassandra.yaml
存储位置
运行日志
log4j.appender.R.File=/var/log/cassandra/system.log
缓存数据文件
/var/lib/cassandra/saved_caches
集群名
Test Cluster
种子节点
seed:
- 192.168.1.5
- 192.168.1.7
autobootstrap 节点自己作为种子节点是,不能指定true
listen_address:
rpc_address:
安全
1、指定验证类(作为plugin需额外提供)
authenticator: org.apache.cassandra.auth.AllowAllAuthenticator
authority: org.apache.cassandra.auth.AllowAllAuthority
#无验证
org.apache.cassandra.auth.SimpleAuthenticator #鉴权 passwd.properties
org.apache.cassandra.auth.SimpleAuthority #授权 access.properties
#简单验证
2、告知JVM文件路径
JVM_OPTS="-Dpasswd.properties=/home/cassandra/conf/passwd.properties -access.properties= /home/cassandra/conf/access.properties"
3、定义文件内容
passwd.properties
mykeyspace=user1,user2,user3
access.properties
user1=abc
user2=123
user3=xyz
并发
concurrent_reads 视CPU核心数定
concurrent_writes 视并发客户端数定
启动配置
cassandra.in.sh(conf/cassandra-env.sh)( cassandra.in.bat)
JVM_OPTS -Xms2048M -Xmx2048M
日志配置
./conf/log4j-server.properties
工具
./bin/sstablekeys sstable_file_path
查看SSTable中的键值
web控制台
http://github.com/suguru/cassandra-webconsole
管理
./bin/nodetool
avro
thrift
需要http://thrift.apache.org
thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份thrift脚本,即可自动获得其它开发语言的代码(比如 c++ java python ruby c# haskell ocmal erlang cocoa php squeak).
需要http://www.boost.org
编译thrift
可能需要php5.2+
./bootstrap.sh 可能不需要
./configure
./make
./make install
cd ./lib/
./make
which thrift
压力测试
生成压力脚本
cd /contrib/py_stress
ant gen-thrift-py
stress.py -h
Cygwin一个windows中的Bash Shell模拟器,允许执行各种linux工具。
编程接口
Cassandra提供了多种语言接口,如Java、C++、C#、Python等。正是由于使用了Thrift框架,Cassandra的开发者只需要定义客户端与服务器端之间的相关通信的结构体和接口,并提供一个服务契约文件cassandra.thrift,即可提供多种编程语言接口。在我们下载的Cassandra发行包中,只包含了Java的编程接口。假设我们已经安装好了Thrift,那么通过执行简单的命令就可以获得C#或C++的编程接口。生成C#编程接口如下:thrift -gen csharp cassandra.thrift 生成C++编程接口如下:thrift -gen cpp cassandra.thrift 在生成编程接口的代码中,thrift是我们安装的可执行文件,-gen命令后面带的参数是需要生成代码的种类,csharp代表C#,cpp代表C++,最后一个参数cassandra.thrift代表的是服务的契约文件,这个文件在Cassandra的发行包中interface目录下。只需查看cassandra.thrift即可了解编程接口定义。
数据类型
Column
SuperColumn
ColumnOrSuperColumn
ColumnParent
ColumnPath
SliceRange
SlicePredicate
Deletion
Mutation
KeyRange
KeySlice
TokenRange
AuthenticationRequest
ConsistencyLevel
NotFoundException
InvalidRequestException
UnavailableException
TimedOutException
发表评论
-
OpenMeetings的安装
2012-01-20 10:35 761OpenMeetings的安装 2011年0 ... -
视频聊天网站的研究、发展以及趋势(转)
2012-01-20 10:35 824视频聊天网站的研究、发展以及趋势(转) 2010年08月05 ... -
视频聊天网站的研究、发展以及趋势(转) ...
2012-01-20 10:35 669视频聊天网站的研究、发展以及趋势(转) ... 2010年1 ... -
flash录制时出现NetStream.Record.NoAccess错误
2012-01-20 10:35 1055flash录制时出现NetStream.Record.NoAc ... -
vc 正则
2012-01-20 10:35 687vc 正则 2010年06月11日 文本字符串的处理、分 ... -
ubuntu速配指南之热门设置
2012-01-19 15:38 829ubuntu速配指南之热门设 ... -
建模工具13款
2012-01-19 15:37 1112建模工具13款 2011年02月03日 13个优秀的UM ... -
酷壳网陈皓:开发者实用学习资源汇总
2012-01-19 15:37 697酷壳网陈皓:开发者实用 ... -
stardict安装与优化详解
2012-01-19 15:37 925stardict安装与优化详解 2011年10月08日 ... -
紫色朝阳11
2012-01-17 05:22 591紫色朝阳11 2012年01月13日 沉默许久, ... -
神通神变
2012-01-17 05:22 643神通神变 2012年01月13日 。时调达即向舍利弗所. ... -
捷达学校《初级会计实务》考点解析例题---第四章
2012-01-17 05:22 636捷达学校《初级会计实 ... -
公司视角
2012-01-17 05:22 659公司视角 2012年01月13日 ... -
上海之梦
2012-01-16 04:17 710上海之梦 2009年12月01日 来上海马上两年了,真快 ... -
“嗲”上海文化,女人需要学会的4种气质
2012-01-16 04:17 677“嗲”上海文化,女人需 ... -
也说上海女孩的嗲----
2012-01-16 04:17 1156也说上海女孩的嗲---- 2 ... -
撒娇有理?上海女人的嗲文化!
2012-01-16 04:16 821撒娇有理?上海女人的嗲 ... -
上海女人的"嗲"文化
2012-01-16 04:16 681上海女人的"嗲" ...
相关推荐
token是cassandra里相当重要的一个概念,它是cassandra用来平衡集群内各节点负载的一个属性。cassandra里有不同的token分配策略,推荐采用默认的RandomPartitioner分区策略。在这个策略下,token是一个0~2的127次方...
Cassandra个人学习笔记总结,引用请注明出处。
cassandra 学习
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非...
cassandra学习资料
cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战...
Cassandra 权威指南 大数据学习必备。 本书是一本广受好评的Cassandra图书。与传统的关系型数据库不同,Cassandra是一种开源的分布式存储系统。书中介绍了它无中心架构、高可用、无缝扩展等引人注目的特点,讲述了...
The rising popularity of Apache Cassandra rests on its ability to handle very large data sets that include hundreds of terabytes -- and that's why this distributed database has been chosen by ...
DevCenter cassandra客户端 DevCenter cassandra客户端 DevCenter cassandra客户端
Cassandra(apache-cassandra-4.0.1-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
Cassandra 入门学习 Clauster 实例 Cassandra Log4j 下应用
Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
用于cassandra学习资料,可以帮助初学者快速入门和深入
Cassandra文档
cassandra介绍
1、cassandra的安装、维护使用 2、java操作cassandra实例 3、cql使用详解
Learning_Apache_Cassandra .pdf