Apache Cassandra是一套开源分布式 Key-Value 存储系统。它最初由 Facebook 开发用于储存特别大的数据。Cassandra适合于实时事务处理和提供交互型数据。Cassandra的数据模型是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google's BigTable 的数据结构和功能特点,采用 Memtable 和 SSTable 的方式进行存储。在 Cassandra 写入数据之前,需要先记录日志 ( CommitLog ),然后数据开始写入到 Column Family 对应的 Memtable 中,Memtable 是一种按照 key 排序数据的内存结构,在满足一定条件时,再把 Memtable的数据批量的刷新到磁盘上,存储为SSTable。本文主要来介绍一下关于Cassandra的安装配置方法。
注:本文默认您已经安装了JDK环境
一、Cassandra节点的安装和配置
1.下载Cassandra
wget ?path=/cassandra/2.1.5/apache-cassandra-2.1.5-bin.tar.gz
2.解压缩文件
tar -zxvf apache-cassandra-2.1.5-bin.tar.gz
mv apache-cassandra-2.1.5-rc1 cassandra
3.Cassandra的目录说明
bin 存放与 Cassandra 操作的相关脚本
conf 存放配置文件的目录
interface Cassandra 的 Thrift 接口定义文件,可以用于生成各种编程语言的接口代码
Javadoc 源代码的 javadoc
lib Cassandra 运行时所需的 jar 包
4.配制Cassandra节点的数据存储目录
#修改配制文件 storage-conf.xml
#cd conf
<CommitLogDirectory>/data/db/lib/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>/data/db/lib/cassandra/data</DataFileDirectory>
</DataFileDirectories>
5.修改日志配制文件 log4j.properties
# 日志路径
#log4j.appender.R.File=/var/log/cassandra/system.log
# 配置后的日志路径 :
log4j.appender.R.File=/data/db/log/cassandra/system.log
6.创建文件存放数据和日志的目录
# mkdir – p /data/db/lib/cassandra
# mkdir – p /data/db/log/Cassandra
7.配制完成后,启动 Cassandra
# bin/Cassandra
INFO 09:29:12,888 Starting up server gossip
INFO 09:29:12,992 Binding thrift service to localhost/127.0.0.1:9160
#看到这两行启动回显信息时,说明 Cassandra 已启动成功。
8.连接到 Cassandra 并添加、获取数据
#bin/cassandra-cli --host localhost --port 9160
#cassandra>
#cassandra> set Keyspace1.Standard2['studentA']['age'] = '18'
#Value inserted
#cassandra> get Keyspace1.Standard2['studentA']
#=> (column=age, value=18, timestamp=1272357045192000)
#Returned 1 results
9.停止Cassandra服务
# ps -ef | grep cassandra
# kill -9 16250
二、补充
Cassandra配制文件storage-conf.xml相关配制说明
#storage-conf.xml
<!-- 集群时显示的节点名称 -->
<ClusterName>Test Cluster</ClusterName>
<!-- 节点启动时,是否自动加入到集群中,默认为 false -->
<AutoBootstrap>false</AutoBootstrap>
<!-- 集群的节点配制 -->
<Seeds> <Seed>127.0.0.1</Seed> </Seeds>
<!-- 节点之间通迅的监听地址 -->
<ListenAddress>localhost</ListenAddress>
<!-- 基于 Thrift 的 cassandra 客户端监听地址,集群时设为:0.0.0.0 表示侦听所有客户端 , 默认为:localhost -->
<ThriftAddress>localhost</ThriftAddress>
<!-- 客户端连接的端口 -->
<ThriftPort>9160</ThriftPort>
<!-- FlushDataBufferSizeInMB 将 memtables 上的数据写入在 Disk 上,超过设定好的限制大小时 ( 默认 32M),则将数据写入磁盘,
FlushIndexBufferSizeInMB 超过设定的时长(默认 8 分钟)后,将 memtables 由的数据写入磁盘中-->
<FlushDataBufferSizeInMB>32</FlushDataBufferSizeInMB>
<FlushIndexBufferSizeInMB>8</FlushIndexBufferSizeInMB>
<!-- 节点之间的日志记录同步模式。默认:periodic, 对应配制 CommitLogSyncPeriodInMS 启动 batch 时,则对应的配制CommitLogSyncBatchWindowInMS -->
<CommitLogSync>periodic</CommitLogSync>
<!-- 默认为每 10 秒同步一次日志记录 -->
<CommitLogSyncPeriodInMS>10000</CommitLogSyncPeriodInMS>
<!-- <CommitLogSyncBatchWindowInMS>1</CommitLogSyncBatchWindowInMS> -->