`
gemantic
  • 浏览: 337252 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cassandra技术分享

阅读更多


背景

 

cassandras是由facebook的两位工程开发出来的一款nosql数据库。它兼有Dynamo和BigTable的优点。主要有下面一些特点:

  • 分布式,无单点失败
  • 基于列族的数据模型
  • 可水平扩展,添加或删除节点不需要重启任何进程

安装与配置

 

cassandra的安装和配置都比较简单。如果不做集群,直接把下下来的压缩包解压后,就可以使用。如果要做集群,那就需要配置conf目录下的storage-conf.xml文件。storage-conf.xml文件中的主要配置参数解释如下:

  • ClusterName  集群名.两台机器要处于同一个集群,必须配置相同的集群名
  • AutoBootstrap  如果设置为true,当有新结点加入集群时,不再需要额外的操作
  • KeySpace  相当于关系数据库中的scheme或database
  • Partitioner  分区器.如果要使数据均匀的分布到各个结点上,可以使用RandomPartitioner
  • Seeds  种子结点.
  • ListenAddress  结点间互相通信使用的ip地址

配置完storage-conf.xml文件后,执行bin目录下的cassandra文件就可以启动cassandra.要监视集群的运行状态可以使用nodeprobe命令.

 

客户端API

 

连接cassandra可以使用两种api,一种是thrift api,另一种是高级api.下面是一段用thrift api连接cassandra的代码

Ttransport tr = new Tsocket(“192.168.0.1”, 9160);
TProtocol  proto = TBinaryProtocol(tr);
tr.open();
Cassandra.Client client = new Cassandra.Client(proto);
ColumnPath  cp = new ColumnPath(“Super1”, 
			“SuperColumn_1”.getBytes(“utf-8”), null);
ColumnOrSuperColumn cosc = client.get(“Keyspace1”, key, cp, 
				ConsistencyLevel.ONE);
SuperColumn sc = cosc.super_column;
for (Column col : sc.columns) {
	String colname = new String(col.getName(), “UTF-8”);
	String colvalue = new String(col.getValue(), “UTF-8”);
	…   …
}
tr.close();

假设集群有三个结点组成: 192.168.0.1, 192.168.0.2, 192.168.0.3,那么上面这段连接cassandra的代码就有一个问题: 代码中只连接192.168.0.1这一个结点,一旦这个结点宕机就与整个集群失去了联系.但其实cassandra是没有中心结点的,一个结点宕机不会影响整个集群(假设复制因子大于1),所以在连接cassandra时不能只尝试连接一个结点,而应当尝试连接多个结点.

 

数据的读取和写入

 

写入过程如下:

1) 写入提交日志

2) 发送数据到合适的结点

3) 写入本地日志并且更新memtables

4) 把memtable中的数据刷新到磁盘上

5) 删除提交日志

6) 如果需要,则对存储的数据进行compact

 

读取过程如下:

1) 通过api访问任一个结点

2) 如果该结点存在这个key指定的数据,则返回,否则根据partioner计算该key对应的value在哪个结点,并从该结点取得数据返回.

 

一致性哈希和Gossip协议

 

cassandra能做到没有单点代失败实际上是由一致性哈希和gossip协议保证的.

 

 

限制 

 

使用cassandra时要注意下面这些限制:

  • 一行数据必须要能放到一个结点上.cassandra不会把一行数据分开存储
  • 一列数据的长度不能大于2GB
  • 一行最多可以包含有20亿列
  • key必须限制在64kb以下

 

 

 

分享到:
评论

相关推荐

    Cassandra应用和改进

    在DTCC 2014中国数据库技术大会上,360的大数据团队分享了Cassandra应用的现状、存在的问题以及未来的改进方向。首先,他们给出了Cassandra集群的现状,包括存储规模、主机规模、备份规模和数据规模,以及单集群规模...

    cassandra权威指南(中文)

    - **最佳实践**:分享Cassandra使用过程中的经验和教训,帮助新用户快速上手。 综上所述,《Cassandra权威指南(中文)》涵盖了Cassandra的各个方面,不仅深入浅出地介绍了其基础知识和技术细节,还提供了丰富的...

    cassandra Example的一点理解及疑问

    这篇博客“cassandra Example”的作者可能分享了他在探索Cassandra实例过程中的一些见解和遇到的问题。通常,这样的示例会涵盖Cassandra的基本操作,如创建表、插入数据、查询数据以及集群管理等。作者可能会通过...

    Cassandra in Action with Twitter’s Ruby Client.pdf

    同时,鼓励读者参与社区讨论,分享经验,共同推动技术发展。 #### 结语 通过本教程的学习,读者应能建立起一个功能完备的开发环境,对如何在Cassandra的方式下建模数据有了深入理解,并掌握了Twitter的Cassandra ...

    datastax-cassandra

    2. **技术支持**:虽然社区版没有商业版那样的官方技术支持,但社区活跃,有许多用户和开发者分享经验和解决问题,对于熟悉开源文化的人来说,这是一个宝贵的资源。 3. **版本1.2.5**:dsc-cassandra-1.2.5是...

    PyPI 官网下载 | una-django-cassandra-engine-3.1.0.tar.gz

    《PyPI官网下载:una-django-cassandra-engine-3.1.0的全面解析》 在Python的世界里,PyPI...在不断发展的技术环境中,像una-django-cassandra-engine这样的工具,无疑为我们的开发工作提供了更多的选择和可能性。

    大数据技术分享 大数据处理 MediaV聚合分析实时数据处理 共38页.pdf

    【大数据技术分享 大数据处理 MediaV聚合分析实时数据处理】是本次分享的主题,主要涵盖了以下几个方面的内容: 1. **聚合分析总体架构**:MediaV的聚合分析系统旨在为B2C电商企业提供专业的数据统计分析服务,通过...

    大数据技术分享 Spark技术讲座 深入探索具有高级性能调优的SQL Spark 共45页.pdf

    ### 大数据技术分享:深入探索Spark SQL与高级性能调优 #### 一、引言 随着大数据时代的到来,高效处理海量数据成为企业面临的重要挑战之一。Apache Spark作为一款开源的大规模数据处理框架,因其出色的性能表现而...

    大数据技术分享 大数据技术深入浅出 共39页.pdf

    - **Cassandra**:分布式NoSQL数据库,支持高可用性和高性能。 #### 查询技术 - **Spark SQL**:结合SQL查询和DataFrame API的模块。 - **Impala**:提供低延迟的SQL查询服务。 - **Drill**:支持动态模式发现的...

    谷歌师兄的leetcode刷题笔记-hectorsharp:Cassandra的高级.NET客户端

    标题中的“谷歌师兄的leetcode刷题笔记”表明这是一份由在谷歌工作的人分享的关于LeetCode编程题目的学习资料,而“hectorsharp:Cassandra的高级.NET客户端”则指出这份笔记特别关注Cassandra数据库的高级.NET接口...

    真是累啊

    结合描述中的博文链接,我们可以推测这篇文章可能是在ITEYE博客平台上发表的一篇关于IT技术的分享,但具体内容由于链接无法直接访问,我们需要根据标签和提供的文件名来推测。 标签“源码”和“工具”暗示了文章...

    PyPI 官网下载 | CassandraLauncher-1.19-0.tar.gz

    PyPI是Python开发者发布和分享他们软件包的主要平台,用户可以通过pip(Python的包管理器)轻松安装这些包。 标签"Python库"表明CassandraLauncher是一个Python编程语言的库,它可能包含了一系列功能,允许开发者在...

    中国数据库技术大会大数据应用及实践专场PPT资料.rar

    2. 大数据存储:探讨适合大数据的存储解决方案,如分布式文件系统(HDFS)、NoSQL数据库(如HBase、Cassandra)和列式存储(如Hive)。 3. 大数据处理:讲解数据清洗、转换、集成的过程,以及批处理和实时流处理的...

    PyPI 官网下载 | CassandraLauncher-1.0.1.1.tar.gz

    PyPI是Python开发者发布和分享自己开发的Python模块、库或工具的平台,用户可以方便地通过pip安装这些包。 描述中提到的“资源全名:CassandraLauncher-1.0.1.1.tar.gz”,进一步确认了这个包的完整名称和压缩格式...

    分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、云原生、大数据与云计算技术和渗透技术。另外.zip

    分布式数据库,如Apache Cassandra、Google Spanner和Amazon DynamoDB,它们为大规模数据存储提供了高可用性和可扩展性。分布式事务则涉及如何在多节点间保证数据的一致性,例如两阶段提交、三阶段提交和Saga模式等...

    大数据的关键技术和应用分享.pptx

    2. **NoSQL数据库**:如MongoDB、Cassandra,它们适合处理非结构化和半结构化数据,提供水平扩展能力。 3. **流处理技术**:如Apache Kafka、Spark Streaming,用于实时处理高速流入的数据流。 4. **内存计算**:...

    infoq系统架构与前沿技术

    4. 数据库技术:可能涵盖了NoSQL数据库的兴起,如MongoDB、Cassandra等,对比传统的关系型数据库,分析其在大数据处理和高并发场景下的优势。 5. 容器技术:Docker尚未发布,但容器化概念可能已经初具雏形,杂志...

Global site tag (gtag.js) - Google Analytics