官方主页:
http://cassandra.apache.org/

简介:
  The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. 
Cassandra was open sourced by Facebook in 2008, and is now developed by Apache committers and contributors from many companies.

Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
架构

  • Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。
  • Cassandra的系统架构与Dynamo一脉相承,是基于O(1)DHT(分布式哈希表)的完全P2P架构,与传统的基于Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。
  • Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。

特性
  和其他数据库比较,Cassandra有三个突出特点:

  • 模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。
  • 真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
  • 多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。

一些使Cassandra提高竞争力的其他功能:

  • 范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。
  • 列表数据结构 :在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非常方便的。
  • 分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

与RDBMS对比来认识cassandra:

keyspace:是cassandra中数据的最外层容器,和关系型数据库概念相近。keyspace有一个名字和一些定义了整个keyspace范围的全局行为属性。有部分人建议,给每个应用建立一个单独的keyspace,但实际没有太多事实依据。要注意,如果给一个应用创建了上千个keyspace,难免会遇到困难。

可以为一个应用创建多个keyspace,但通常只有希望为不同的列族设置不同的副本因子和副本放置策略的时候,才考虑让同一个应用使用多个keyspace。比如,对于一些低优先级的数据,可以单独放在一个设置较低副本因子的keyspace当中,这样就可以减少一些cassandra复制这些数据的工夫。但是这样增加了太多的复杂度,有可能得不偿失。

System keyspace:用于存储关于集群的原数据,以帮助各种操作顺利进行,如下面的数据库非常类似。

在SQL Server中,同样维护着两个元数据库:master和tempdb。master用于保存磁盘空间、使用率、系统设置以及一般服务安装信息等。而tempdb则是一个工作空间,用于存储中间结果和完成一般性任务的。

在Oracle中,有system的表空间,用作类似用途。

system keyspace不仅存储了用于本地节点的数据,也存储提示切换信息。这些元数据包括:

  • 节点令牌
  • 集群名
  • 用于支持动态加载的keyspace和schema的定义;
  • 迁移数据
  • 节点是否自举成功

列族:与数据库的表容器类似,keyspace是一个或多个列族的容器。列族就类似于关系型数据库里的表,是集合了很多行的容器。每一行都有一些有序的列。

列:

参考:
http://zh.wikipedia.org/zh/Cassandra

安装

本节将介绍在在CentOS 6.4安装Cassandra 2.0.9

一、安装jdk1.7

因为Cassdra2.0.9最低要求就是1.7版本,jdk的安装见文章《CentOS 6下安装JDK并配置环境变量》

二、准备用户环境

 
1
2
groupadd cassandra
useradd -s /bin/bash -g cassandra -d /opt/cassandra cassandra

三、安装cassandra

1、下载

找一个适合的镜像节点:我选的是北京理工大学的节点

 
1
wget http://mirror.bit.edu.cn/apache/cassandra/2.0.9/apache-cassandra-2.0.9-bin.tar.gz

PS:安全起见自己可以验证一下数据完整性

2、解压、设置权限

 
1
2
3
4
5
6
tar -zxvf apache-cassandra-2.0.9-bin.tar.gz  -C /opt/cassandra
chown -R cassandra:cassandra /opt/cassandra
mkdir /var/lib/cassandra
mkdir /var/log/cassandra
chown -R cassandra:cassandra /var/lib/cassandra
chown -R cassandra:cassandra /var/log/cassandra

3、运行

切换到cassandra用户,运行bin/cassandra

 
1
2
cd /opt/cassandra/apache-cassandra-2.0.9/bin/
su cassandra ./cassandra

如果出现

 
1
2
INFO 02:34:57,479 Compacting [SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-4-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-3-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-1-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-2-Data.db')]
INFO 02:34:57,545 Node localhost/127.0.0.1 state jump to normal

证明成功启动,开一个cqlsh试试

 
1
2
3
4
5
root@localhost bin]# ./cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.9 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>

4、关闭Cassandra

 
1
2
ps -aux |grep cassandra
kill pid#pid为cassandra的pid

本节完成在centos 6.4安装cassandra 2.0.9/2.0.10。

Cassandra安装及其简单试用的更多相关文章

  1. Spark简介安装和简单例子

    Spark简介安装和简单例子 Spark简介 Spark是一种快速.通用.可扩展的大数据分析引擎,目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark S ...

  2. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  3. 『NiFi 学习之路』入门 —— 下载、安装与简单使用

    一.概述 "光说不练假把式." 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远. 实践是最好的老师.那就让我们试用一下 NiFi 吧! 二.安装 ...

  4. Cassandra安装和初次使用

    Cassandra安装和初次使用 卡珊德拉(Cassandra)又译卡桑德拉.卡珊卓,为希腊.罗马神话中特洛伊(Troy)的公主,阿波罗(Apollo)的祭司.因神蛇以舌为她洗耳或阿波罗的赐予而有预言 ...

  5. (转)python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  6. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)

    一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...

  7. python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  8. memcache的windows下的安装和简单使用

    原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...

  9. 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用

    版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...

随机推荐

  1. ajax请求后台,返回json格式数据,模板!

    添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...

  2. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

  3. lua 初接触 --- The first time use Lua for programing

    The first time use Lua for programing Wang Xiao 1. 关于 lua 的变量类型:  lua 变量的定义与matlab有点不同: local d , f ...

  4. Hadoop 安装记录

    第一步:打开/etc 下面的 profile文件,在其中加入环境变量设置的代码 done JAVA_HOME=/home/hadoop/installer/jdk7u65 PATH=$JAVA_HOM ...

  5. LVM磁盘管理

    http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html Linux LVM硬盘管理及LVM扩容 LVM磁盘管理 一.LVM简介... ...

  6. 二十四种设计模式:状态模式(State Pattern)

    状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...

  7. com.sun.crypto.provider.SunJCE

    Could not instantiate bean class [com.lz.monitor.alert.service.ServiceImp]: Constructor threw except ...

  8. wikioi 1475 m进制转十进制

    /*===================================== 1475 m进制转十进制 题目描述 Description 将m进制数n转化成一个十进制数 m<=16 题目保证转 ...

  9. java动态代理(JDK和cglib)

    转:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代 ...

  10. 查看SQL执行计划

    一用户进入某界面慢得要死,查看SQL执行计划如下(具体SQL语句就不完全公布了,截断的如下): call     count       cpu    elapsed       disk       ...