cassandra

转载 2012年04月01日 15:04:14
  最近尝试搭建一个云存储平台,在不断的对比之后,决定采用cassandra作为底层数据库。这里记录cassandra的学习过程。

    Cassandra是一个混合型的非关系的数据库,主要特性是分布式、基于Column的结构化和高伸展性。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。Cassandra集群没有中心节点,各个节点的地位完全相同。

    Cassandra的系统架构是基于DHT(分布式哈希表)的完全P2P架构,与传统的基于 Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。

        首先介绍一下cassandra的启动和配置。

一、下载cassandra

        http://cassandra.apache.org/   最新版的cassandra 1.0.8可以从这里获取,下载tar压缩包。cassandra使用JAVA编写,因此无平台限制,只要有JAVA即可。我是在windows下安装的cassandra,但linux下也差不多。

二、配置环境变量

        包括JAVAcassandra自己的环境变量。JAVA环境变量的配置说明很多,这里只说一下cassandra的环境变量配置。

        右键我的电脑->属性->高级->环境变量,在系统变量里新建一个,name里输入Cassandra_Homepath输入cassandra的目录。如我的cassandra解压在D盘根目录,那么path输入D:\apache-cassandra-1.0.8。配置好后,在命令行界面输入 echo %Cassandra_Home%查看是否配置成功。

三、修改配置文件

        cassandra的配置文件位于cassandra目录的conf文件夹下,我们需要配置的是cassandra.yamllog4j-server.properties。若你在conf里找不到cassandra.yaml,而是一个xml文件,那请去下载最新版的cassandra

        log4j-server.properties需要配置log4j.appender.R.File属性,这是log文件的路径,我将它配置为D:/apache-cassandra-1.0.8/my/log/log。注意,这里的路径是“文件”的路径,不是“目录”的路径。

        cassandra.yaml需要配置较多。

        cluster_name:这是集群的名字,可以使用默认设置,我将它修改为FirstCluster。一个集群里,所有节点的配置文件里这个属性都应该设置为相同的,这样它们才能互相找到。

        initial_token:默认留空,我们可以配置为0或其它数字,现在先留空。

       data_file_directories:存放数据库数据文件的目录路径(不是文件路径),我将它配置为D:/apache-cassandra-1.0.8/my/data

       commitlog_directory:存放提交日志的目录路径。

       saved_caches_directory:缓存文件夹路径。

       还有一些属性,目前不需要配置,在后面进行集群的时候配置。

       另外注意,以上所有路径最好都使用正斜杠,因为反斜杠在程序里会解析为特殊的符号。

四、启动cassandra

       命令行进入cassandra目录的bin文件夹,启动cassandra.batlinux下启动cassandra),cassandra开始运行。这个命令行窗口不能关闭,否则cassandra也被关闭了。

       提示找不到MX4J,可以忽视,或者去下一个mx4j-tools.jar并拷贝在cassandra目录下的lib文件夹内。

       无法跳过的错误通常是环境变量配置不对或配置文件配置错误,按提示解决即可。

五、测试cassandra

       命令行进入cassandra目录的bin文件夹,启动cassandra-cli.bat。首先尝试连接到本机上的cassandra服务:

        connect localhost/9160; (分号一定不能少)

       若成功,会提示你 成功连接到FirstCluster。接着创建一个keyspace

        create keyspace DEMO;

        这一步有可能失败,通常失败提示是:cannot locate cassandra.yaml。若遇见这个提示,将conf文件夹下的cassandra.yaml拷贝到bin文件夹下即可。

        创建成功后,进入DEMO keyspace

        use DEMO;

        创建一个column family

        create column family Student;

        往里面插入记录:

        set Student[utf8('1')][utf8('id')] = utf8(10010); 

        set Student[utf8('1')][utf8('name')] = utf8('fykhlp');

        查询记录:

        get Student[utf8('1')];  或   list Student;

六、附cassandra数据模型


1.keyspace:相当于关系型数据库里的数据库,前文所说的cluster相当于服务名。

2.columnFamily:相当于关系型数据库里的表,它里面只有两列,即keycolumns。但是columns里面可以有很多的记录,如上图studentA里的columns。上面的插入语句里,1就是columnFamily里的keystudentA),idcolumns里的name10010value

3.columncassandra里的最基本的存储单位,由namevaluetimestamp组成。timestamp是时间戳,name表示你插入的属性名,如ageheightvalue是属性的值(实际上也反过来用)。具体来说,column相当于关系型数据库里的一条记录,里面的每条(ageheight)相当于记录的某个字段。

4.superColumn:特殊的columns,它的value部分可以包含多个columns

cassandra 常见问题

摘要 本文主要介绍在部署cassandra集群以及使用cassandra过程中遇到的一些问题。 文章只发布在CSDN 和个人站点 更多nosql文章可以访问stone fang 个人主页 ...
  • FS1360472174
  • FS1360472174
  • 2016年06月18日 14:08
  • 5247

Cassandra_教程二_利用 CQL 操作 Cassandra

Cassandra 可以使用 cqlsh 进行管理, 使用的语法格式为 CQL。 cqlsh位于Cassandra的bin目录,cqlsh需要python支持。在使用cqlsh 之前需要安装pytho...
  • u010003835
  • u010003835
  • 2016年09月09日 11:34
  • 7789

cassandra学习笔记一

最近尝试搭建一个云存储平台,在不断的对比之后,决定采用cassandra作为底层数据库。这里记录cassandra的学习过程。     Cassandra是一个混合型的非关系的数据库,主要特性是分布...
  • fykhlp
  • fykhlp
  • 2012年03月02日 14:45
  • 7671

Cassandra源码解析

你好,朋友,很高兴能和你一起分享我对Cassandra源码的研究和分析成果,虽然分析不能面面俱到,但是以下的文章涵盖了大部分Cassandra的核心内容,展示了主要的工作逻辑和关键代码。这里我将假定您...
  • hellohellohhhhh
  • hellohellohhhhh
  • 2017年11月01日 09:21
  • 1421

Cassandra介绍与使用

介绍Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dyna...
  • mao_2110901055
  • mao_2110901055
  • 2017年05月25日 11:22
  • 2055

Cassandra 数据模型设计总结

结合前段时间团队使用Cassandra使用过程,简单总结了模式设计,请大家斧正。...
  • u011291159
  • u011291159
  • 2014年12月18日 18:37
  • 3486

cassandra高级操作之索引、排序以及分页

http://www.cnblogs.com/youzhibing/p/6617986.html   本次就给大家讲讲cassandra的高级操作:索引、排序和分页;处于性能的考...
  • zdy0_2004
  • zdy0_2004
  • 2017年03月26日 01:40
  • 504

cassandra入门

Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google's Big...
  • jjwen
  • jjwen
  • 2017年04月14日 14:15
  • 717

Cassandra 3.10 安装手记

Cassandra,NoSQL的一种,从数据库排名上,看得出来,NoSQL系列,排名第三(Redis虽然是KV,但是没有人用它当数据库,都是做缓存) MongoDB是文档型的,Cassandra和Hb...
  • asdfak
  • asdfak
  • 2017年05月14日 22:58
  • 783

cassandra集群搭建实战

1. 基础配置与安装 1.1     基础环境 node110.202.20.191 (seed1) node210.202.20.192 node310.202.20.193 node41...
  • ch648966459
  • ch648966459
  • 2016年06月14日 14:04
  • 11157
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cassandra
举报原因:
原因补充:

(最多只允许输入30个字)