`
gemantic
  • 浏览: 336564 次
  • 性别: 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 Example的一点理解及疑问

    这篇博客“cassandra Example”的作者可能分享了他在探索Cassandra实例过程中的一些见解和遇到的问题。通常,这样的示例会涵盖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

    【目录】 ·聚合分析总体架构 ·实时数据业务需求 ·技术框架选型 ·Cassandra简介 ·性能测试 ·实际应用

    谷歌师兄的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模式等...

    infoq系统架构与前沿技术

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

    大数据与大数据技术.pptx

    议程 公司简介 大数据与大数据技术 大数据技术应用 大数据案例分享 问题讨论 Advanced Analytic Service All Rights Reserved 2016 2 大数据与大数据技术全文共59页,当前为第2页。 公司简介 公司概况&发展历史 ...

    book-planner-backend:读书计划者

    这个项目采用现代化的开发框架和技术,如Spring Boot、RESTful API设计以及Cassandra数据库,旨在提供高效、可扩展的解决方案。 【描述】"book-planner-backend:读书计划者"是一个专为热爱阅读的人设计的应用程序...

    数据库技术双月刊 数据库技术双月刊

    5. **分布式数据库**:随着云计算和大数据的发展,分布式数据库系统如Hadoop HBase、Cassandra等的介绍和实践应用可能是期刊的重点内容。 6. **数据库性能优化**:索引策略、查询优化、存储过程、分区策略等都是...

    大数据与大数据技术(1).pptx

    议程 公司简介 大数据与大数据技术 大数据技术应用 大数据案例分享 问题讨论 Advanced Analytic Service All Rights Reserved 2016 2 大数据与大数据技术(1)全文共58页,当前为第2页。 公司简介 公司概况&发展历史 ...

    park美国峰会上几大顶级数据商精彩PPT分享

    在"park美国峰会上几大顶级数据商精彩PPT分享"这一主题中,我们得以一窥全球顶尖数据商对于Spark技术的深入理解和应用实践。Spark作为一个强大的开源大数据处理框架,因其高效、易用和多功能性而备受青睐。下面,...

    工业大数据Spark查询优化案例分享.pdf

    本次主要分享上汽集团对于Spark查询的优化思路。大数据量的精确查询是我们经常遇到的一类场景。为了解决此类问题,我们做了诸多实践。实践思路主要分为两类,一类主要着眼于物理层面,主要为了缩小数据源的范围,...

    2017中国数据库技术大会(DTCC).rar

    这场大会汇聚了国内外顶尖的数据库专家、大数据分析师以及行业内的领军人物,旨在分享最新的技术趋势、实践经验以及创新解决方案。参会者可以从中获取到宝贵的理论知识和实际操作经验,对提升个人和企业的技术能力...

    分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务等等

    分布式数据库如MySQL Cluster、Cassandra和MongoDB,它们能够处理海量数据并提供高可用性。分布式事务是保证数据一致性的重要手段,2PC(两阶段提交)、TCC(尝试、确认、补偿)和Saga等事务模型各有优缺点,需根据...

Global site tag (gtag.js) - Google Analytics