第11周 海量数据与列式数据库Cassandra

来源:互联网 发布:搞笑的淘宝买家秀图集 编辑:程序博客网 时间:2024/05/14 02:35

Cassandra

Cassandra的含义
由Facebook开发,后被捐献给Apache基金会,成为开源软件
以Amazon Dynamo为最初的模仿对象,结合Google Big Table基于列族的数据模型,可以称为Dynamo 2.0
支持无中心的分布式设计,不存在单点问题,所有节点功能完全一样
在不间断服务的情况下可弹性扩展或收缩规模
高可用,支持热替换故障节点,支持多数据中心
可调节的一致性
面向行?还是面向列?
官网:http://cassandra.apache.org
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html?pagename=docs&version=1.2&file=index#cassandra/cli_using/use_index_col_t.html

cassandra安装

#安装jdk
# tar zxf jdk-7u9-linux-i586.tar.gz
# mv ./jdk1.7.0_09/ /usr/
[root@linux cassandra]# cd
[root@linux ~]# vi .bash_profile
JAVA_HOME=/usr/jdk1.7.0_09
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH 
# java -version
# java
# javac

#安装cassandra
# tar zxf apache-cassandra-2.0.3-bin.tar.gz
# mv apache-cassandra-2.0.3 cassandra
# cd cassandra/
# mkdir -p data commitlog saved_caches
#cd conf/
修改cassandra.yaml配置文件
data_file_directories:
    - /nosql/cassandra/cassandra/data
commitlog_directory: /nosql/cassandra/cassandra/commitlog
saved_caches_directory: /nosql/cassandra/cassandra/saved_caches
修改log4j-server.properties
log4j.appender.R.File= /nosql/cassandra/cassandra/commitlog/system.log

#启动cassandra
[root@linux bin]# pwd
/nosql/cassandra/cassandra/bin
[root@linux bin]# ./cassandra -f
#-f :是不放到后台去运行,方便做实验看日志输出。

#测试cassandra
[root@linux bin]# pwd
/nosql/cassandra/cassandra/bin
[root@linux bin]# ./cassandra-cli
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 2.0.3
The CLI is deprecated and will be removed in Cassandra 3.0. Consider migrating to cqlsh.
CQL is fully backwards compatible with Thrift data; see http://www.datastax.com/dev/blog/thrift-to-cql3
Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.
[default@unknown] ?

数据模型

集群(cluster)
Keyspaces ——集群是keyspace的容器,Keyspace是数据的最外层容器(类似Oracle的表空间概念)。
列族 ——Keyspace是列族的容器,列族类似于Oracle中的表,列族需要在keyspace中预先定义。
列 ——列是最基本的数据结构单元,列不需要预先定义。

[default@unknown] create keyspace zhang_sp;                    ##创建keyspace
29ac08c0-a3b5-3d95-bfc2-14c86a3d5263
[default@unknown] show keyspaces;
Keyspace: zhang_sp:
  Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
  Durable Writes: true
    Options: [datacenter1:1]
  Column Families:
[default@unknown] use zhang_sp;
Authenticated to keyspace: zhang_sp
[default@zhang_sp] create column family test_clu ;              ##创建列族
1c418137-d55d-395f-bb92-89a1b8885ad3
[default@zhang_sp] show schema;
[default@zhang_sp] drop column family test_clu;
29ac08c0-a3b5-3d95-bfc2-14c86a3d5263
[default@zhang_sp] create column family test_clu               ##修改字符集
... with column_type = 'Standard'
... and comparator = 'UTF8Type'
... and default_validation_class = 'UTF8Type'
... and key_validation_class = 'UTF8Type';
e23dcea5-1be9-335a-a695-cc5e3ad16bc9
[default@zhang_sp] set test_clu['zhangsan'][age]=28;            ##插入行
Value inserted.
Elapsed time: 79 msec(s).
[default@zhang_sp] set test_clu['zhangsan'][phone]=34567;
Value inserted.
Elapsed time: 3.6 msec(s).
[default@zhang_sp] get test_clu['zhangsan'];                   ##查询
=> (name=age, value=28, timestamp=1388069357905000)
=> (name=phone, value=34567, timestamp=1388069563742000)
Returned 2 results.
Elapsed time: 5.51 msec(s).
[default@zhang_sp] list test_clu;                               ##列出所有行
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: zhangsan
=> (name=age, value=28, timestamp=1388069357905000)
=> (name=phone, value=34567, timestamp=1388069563742000)
1 Row Returned.
Elapsed time: 333 msec(s).

0 0
原创粉丝点击