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-trunk

  • 2017年07月05日 21:22
  • 79.16MB
  • 下载

Cassandra cpp Driver 2.1

  • 2015年09月02日 17:00
  • 170KB
  • 下载

cassandra paging 分页方法应用

cassandra paging nodejs driver

Cassandra应用和改进

  • 2015年05月15日 12:51
  • 830KB
  • 下载

datastax cassandra运维分享ppt

  • 2017年10月17日 20:47
  • 640KB
  • 下载

Cassandra3.9版本配置文件参数说明

cluster_name 集群的名称。 这主要用于防止一个逻辑集群中的机器加入另一个逻辑集群。 默认名称: ‘Test Cluster’ num_tokens 这定义了随机分配给环上该节点的令牌...

Cassandra_概要指南

  • 2013年03月28日 20:14
  • 1.02MB
  • 下载

使用Java驱动操作Cassandra

关于使用java驱动,建议使用eclipse+maven创建,比如我们创建一个cassandra.test的工程。在pom.xml里面加入 com.datastax.cassandra...

cassandra20权威指南(英文版)

  • 2015年06月10日 20:56
  • 1.75MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cassandra
举报原因:
原因补充:

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