`

Cassandra(二)

阅读更多

Cassandra是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google's BigTable 的数据结构和功能特点,采用 Memtable 和 SSTable 的方式进行存储。在 Cassandra 写入数据之前,需要先记录日志 ( CommitLog ),然后数据开始写入到 Column Family 对应的 Memtable 中,Memtable 是一种按照 key 排序数据的内存结构,在满足一定条件时,再把 Memtable 的数据批量的刷新到磁盘上,存储为 SSTable 。

//无中心的架构设计,所有节点都是平等的,之间通过gossip进行节点通信


//--------------------------------------------------------------------------------------------
//启动Cassandra的配置
step one : 修改配制文件 storage-conf.xml:
默认的内容
<CommitLogDirectory>/var/lib/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>/var/lib/cassandra/data</DataFileDirectory>
</DataFileDirectories>
配置后的内容
<CommitLogDirectory>/data3/db/lib/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>/data3/db/lib/cassandra/data</DataFileDirectory>
</DataFileDirectories>



step two : 修改日志配制文件 log4j.properties:
log4j.properties 配置
# 日志路径
#log4j.appender.R.File=/var/log/cassandra/system.log
# 配置后的日志路径 :
log4j.appender.R.File=/data3/db/log/cassandra/system.log
创建文件存放数据和日志的目录
# mkdir – p /data3/db/lib/cassandra
# mkdir – p /data3/db/log/Cassandra




//启动服务器
bin/cassandra -f
//启动客户端
bin/cassandra-cli
//连接服务器
connect ip地址/Port端口

停止 Cassandra 服务
查出 Cassandra 的 pid:16328
# ps -ef | grep cassandra
# kill 16328


show cluster name//显示集群的名字



//-----------------------------------------至此可以启动与测试使用Cassandra了




//存在主键--;列族;类似于HBase---键值存储--类似于Redis
//某种程度上又那么类似于关系数据库(包括语法)
keyspace   相当于一个数据库
family(列族)相当于一个表


show keyspaces  显示所有的数据库
create keyspace test 建立一个数据库名叫test
use test 使用该数据库
create column family User建立一个User的列族
describe keyspace test 对该数据库的描述

//增加数据,列族是一个多维有序的映射
//无需提前设置---但是列族是要设置的
set User['a']['name']='Xue'
set User['a']['email']='me@qq.com'

//User是个列族,a就是key,name和email就是两个列

count User['a'] 计算列族User在['a']的数目
//有点像Redis基于内存数据库啊


//获取该数据
get User['a']['name']
get User['a']['email']
get User['a']
//

del User['a']['email']//删除该数据



//集群就是个keyspace的巨大容器
对keyspace的配置有
副本因子
副本存放策略
列族




//每个列都是一个由键,值,时间戳组成的
//不需要先预定--只要有先设置列族再往里面添加列
列的定义中存在另外一个元素设置---列的排列顺序(多种)


//超级列---是一些子列的集合
//多维的存储如['a']['name']--a就是一个超级列

//还可以设计组合键--将多个键值设计融合在一起--这是设计问题了

//具体的可以通过Java API来具体操作cassandra--进行增删改查
//查询时候可以使用区间与切片返回大的集合的一个自己
//相当于条件查询啦---总之啦--存在多种查询方式了
//删除也有多种了---单个与批量的删除
//总之啦--各种丰富的 API 操作


//垃圾回收也是延时的--可以在回收时间内进行数据恢复


可以通过Thrift与Avro与不同的语言进行交互
还有Web,还有一些Java和Python写的客户端进行交互
还可以有可视化界面进行监控(MBean)
其他的分析工具(JMap,OpenNMS,Nagios)


维护的工具:
cfstats:查看每个列族数据的概述信息
tpstats:维护线程池的信息
刷写 bin/nodetool flush -h ip地址
修复 bin/nodetool repair -h ip地址
快照 bin/nodetool -h ip地址 snapshot
快照 bin/nodetool -h ip地址 snapshot one_keysapce_name
清理 bin/nodetool cleanup -h ip地址
清除快照 bin/nodetool -h ip地址 cleansnapshot
负载均衡 bin/nodetool -h ip地址 loadbalance
查看所有节点 bin/nodetool -host ip地址 ring
撤销节点 bin/nodetool decommission -h ip地址



性能调优:
改变commit log改变存储位置--可以多的设置多个位置--其他
如日志反转时间参数设置--写操作持久化参数设置
设置回复超时
memtable内存大小的设置--在内存存在的时间--写入磁盘的线程数目
并发操作数目--包括硬件的考量
缓存的设置
进行压力测试
缓冲区尺寸
JVM调试
分享到:
评论

相关推荐

    cassandra集群配置

    下载 Cassandra 二进制发行包,挑选其中的一台机开始配置。展开 Cassandra 发行包,并进入 conf 目录,修改 cassandra.yaml 文件,该文件为主要配置文件。在 cassandra.yaml 文件中,需要设置数据文件目录、提交日志...

    Cassandra1.0.x实用教程

    #### 三、Cassandra二级索引理解和分析 这部分深入探讨了Cassandra中的二级索引机制。二级索引允许对非主键列进行快速查询,从而提高了数据访问性能。 - **二级索引类型**: - **KEYS**: 主键索引。 - **KEYS_...

    Learning_Apache_Cassandra

    从描述中我们可以得知,文档中可能包括了为什么选择Cassandra而不是其他数据库系统的比较,Cassandra提供的核心特性,例如水平扩展性、高可用性、写优化、结构化记录、二级索引、高效结果排序、即时一致性、可离散...

    cassandra-3.11.3下载

    在解压"apache-cassandra-3.11.3"压缩包后,用户可以找到源代码、二进制文件、配置示例以及相关的用户手册,以便开始使用或进一步定制Cassandra。 总之,Cassandra 3.11.3是一个强大且成熟的分布式数据库系统,它在...

    Cassandra_概要指南

    #### 二、Cassandra的核心特性与架构 Cassandra是由Facebook于2007年开发的,最初用于电子邮件索引搜索等内部服务。2009年,Cassandra成为了Apache的孵化项目,现已成为云存储领域备受推崇的解决方案之一。...

    Cassandra实战.pdf

    ### 关键知识点二:Cassandra数据模型 Cassandra的数据模型基于列族(Column Family)的概念,每个列族类似于关系数据库中的表,但其数据组织方式更为灵活,允许动态添加列而不必更改数据模型。数据存储以键值对的...

    Cassandra架构与应用

    #### 二、Cassandra架构解析 ##### 基础知识与数据模型 Cassandra采用了一种基于列族(Column Families)的数据模型,其中包含了Column、SuperColumn、ColumnFamily、Keyspaces、Row等核心概念。每个Keyspace可视...

    Learning Apache Cassandra 2015

    #### 二、Cassandra与其他数据库系统的比较 在选择数据库时,开发者通常会将Cassandra与其他数据库进行比较,比如MySQL、MongoDB等。相比于这些系统,Cassandra在水平扩展、写入性能以及数据分布方面具有明显优势。...

    Laravel开发-cassandra

    **二、配置Cassandra连接** 接下来,在`config/database.php`配置文件中添加Cassandra的连接信息: ```php 'cassandra' =&gt; [ 'default' =&gt; env('CASSANDRA_DEFAULT', 'default'), 'connections' =&gt; [ 'default'...

    Cassandra1.2

    在Windows上安装Cassandra 1.2,需要下载二进制包,解压后配置环境变量,修改`cassandra.yaml`配置文件,设置节点IP地址、端口等。启动服务后,可以通过`nodetool`工具进行监控和管理,或者使用CQLSH客户端进行数据...

    cassandra权威指南(中文)

    #### 二、Cassandra核心概念 - **键空间**:类似于关系型数据库中的数据库,是Cassandra中逻辑隔离的最高层级单元。 - **表/列族**:键空间下的数据组织单位,相当于传统关系型数据库中的表。 - **行**:由键(主键...

    Cassandra的基础应用

    #### 二、Cassandra的应用特性 **1. 概述** - **定义**:Cassandra是一个开源分布式NoSQL数据库管理系统,特别适合处理大量结构化数据,具备高可用性和无单点故障的特点。 **2. 主要特点** - **模式灵活**:在...

    cassandra 学习

    #### 二、Cassandra架构与CQL **Cassandra的数据模型**包括键空间(Keyspace)、列族(Column Family)、行(Row)等概念。 - **键空间**是Cassandra中的命名空间或容器,用于存储数据和管理策略如复制策略。 - **...

    Cassandra技术详解 操作与测试报告

    #### 二、Cassandra的特点 1. **灵活的Schema** - Cassandra允许开发者在不预先定义具体结构的情况下进行数据存储和检索。这意味着可以随时动态地添加或删除字段,而无需停机或重新组织数据表结构。这种灵活性非常...

    Cassandra在Windows上安装及使用方法

    #### 二、配置Cassandra 在解压后的Cassandra目录中,进入`conf`目录,找到`cassandra.yaml`配置文件进行修改: 1. **数据文件目录**:将默认的数据存储路径`/var/lib/cassandra/data`更改为`D:\cassandra\data`。...

Global site tag (gtag.js) - Google Analytics