Cassandra学习总结,cassandra总结
一.Cassandra简介Cassandra是一套高度可扩展、最终一致、分布式的结构化键值存储系统。
Cassandra由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。
对于一个Cassandra群集来说,只管在群集里面添加节点。
二.架构
1.介绍
点对点分布式系统,集群中各节点平等,数据分布于集群中各节点,各节点间每秒交换一次信息。
每个节点的commit log捕获写操作来确保数据持久性。数据先被写入memtable内存中的数据结构,待该结构满后数据被写入SSTable-硬盘中的数据文件。
所有的写内容被自动在集群中分区并复制。
授权用户可连接至任意数据中心的任意节点,并通过类似SQL的CQL查询数据。
集群中,一个应用一般包含一个keyspace,一个keyspace中包含多个表。
客户端连接到某一节点发起读或写请求时,该节点充当客户端应用与拥有相应数据的节点间的协调者(coordinator)以根据集群配置确定环中的哪个节点当获取这个请求。
2.节点间通信
Cassandra使用点对点通讯协议gossip在集群中的节点间交换位置和状态信息。gossip进程每秒运行一次,与至多3个其他节点交换信息,这样所有节点可很快了解集群中的其他节点信息。
3.数据复制和分发
Cassandra中分发、复制同时进行。Cassandra被设计为点对点系统,会创建数据的多个副本存储在集群中的一组节点中。Cassandra中数据被组织为表,由primary key标识,primary key决定数据将被存储在哪个节点。
4.Partitioner
在Cassandra中,table的每行由唯一的primarykey标识,partitioner实际上为一hash函数用以计算primary key的token。Cassandra依据这个token值在集群中放置对应的行。
5.Snitches
提供网络拓扑信息,用以确定向/从哪个数据中心或者网架写入/读取数据。
(1)所有节点需用相同的snitch;(2)集群中已插入数据后由更改了snitch则需运行一次fullrepair。
6.客户端请求
client连接至节点并发出read/write请求时,该node充当client端应用与包含请求数据的节点(或replica)之间的协调者,它利用配置的partitioner和replicaplacement策略确定那个节点当获取请求。
三.Cassandra数据模型
1.Column Cassandra中最小的数据单元。它是一个3元的数据类型,包含:name,value和timestamp。
2.SuperColumn 可以将SuperColumn想象成Column的数组,它包含一个name,以及一系列相应的Column。
3.ColumnFamily 包含了许多Row的结构
4.Keyspace 数据最外层所有的ColumnFamily都属于某一个Keyspace。一般情况一个程序应用只会有一个Keyspace。
Cassandra数据模型的模型结构可以理解为嵌套的map:
Map<RowKey,SortedMap<ColumnKey, ColumnValue>>
四.Cassandra的安装使用
1.运行环境:
-
- linux
- apache-cassandra-2.2.5
- Python 2.7.10
- Java JDK 1.7
2.首先安装JDK。
3.安装Python
4.安装spark
-
- 下载地址:https://www.python.org/downloads/
- 选择版本
- 解压设置权限配置等
-
安装成功后执行./cqlsh 测试
5.遇到的问题
-
- 安装时报错显示Python版本过低,升级Python到2.7版本解决
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。