背景
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实例过程中的一些见解和遇到的问题。通常,这样的示例会涵盖Cassandra的基本操作,如创建表、插入数据、查询数据以及集群管理等。作者可能会通过...
2. **技术支持**:虽然社区版没有商业版那样的官方技术支持,但社区活跃,有许多用户和开发者分享经验和解决问题,对于熟悉开源文化的人来说,这是一个宝贵的资源。 3. **版本1.2.5**:dsc-cassandra-1.2.5是...
《PyPI官网下载:una-django-cassandra-engine-3.1.0的全面解析》 在Python的世界里,PyPI...在不断发展的技术环境中,像una-django-cassandra-engine这样的工具,无疑为我们的开发工作提供了更多的选择和可能性。
【目录】 ·聚合分析总体架构 ·实时数据业务需求 ·技术框架选型 ·Cassandra简介 ·性能测试 ·实际应用
标题中的“谷歌师兄的leetcode刷题笔记”表明这是一份由在谷歌工作的人分享的关于LeetCode编程题目的学习资料,而“hectorsharp:Cassandra的高级.NET客户端”则指出这份笔记特别关注Cassandra数据库的高级.NET接口...
结合描述中的博文链接,我们可以推测这篇文章可能是在ITEYE博客平台上发表的一篇关于IT技术的分享,但具体内容由于链接无法直接访问,我们需要根据标签和提供的文件名来推测。 标签“源码”和“工具”暗示了文章...
PyPI是Python开发者发布和分享他们软件包的主要平台,用户可以通过pip(Python的包管理器)轻松安装这些包。 标签"Python库"表明CassandraLauncher是一个Python编程语言的库,它可能包含了一系列功能,允许开发者在...
2. 大数据存储:探讨适合大数据的存储解决方案,如分布式文件系统(HDFS)、NoSQL数据库(如HBase、Cassandra)和列式存储(如Hive)。 3. 大数据处理:讲解数据清洗、转换、集成的过程,以及批处理和实时流处理的...
PyPI是Python开发者发布和分享自己开发的Python模块、库或工具的平台,用户可以方便地通过pip安装这些包。 描述中提到的“资源全名:CassandraLauncher-1.0.1.1.tar.gz”,进一步确认了这个包的完整名称和压缩格式...
分布式数据库,如Apache Cassandra、Google Spanner和Amazon DynamoDB,它们为大规模数据存储提供了高可用性和可扩展性。分布式事务则涉及如何在多节点间保证数据的一致性,例如两阶段提交、三阶段提交和Saga模式等...
4. 数据库技术:可能涵盖了NoSQL数据库的兴起,如MongoDB、Cassandra等,对比传统的关系型数据库,分析其在大数据处理和高并发场景下的优势。 5. 容器技术:Docker尚未发布,但容器化概念可能已经初具雏形,杂志...
议程 公司简介 大数据与大数据技术 大数据技术应用 大数据案例分享 问题讨论 Advanced Analytic Service All Rights Reserved 2016 2 大数据与大数据技术全文共59页,当前为第2页。 公司简介 公司概况&发展历史 ...
这个项目采用现代化的开发框架和技术,如Spring Boot、RESTful API设计以及Cassandra数据库,旨在提供高效、可扩展的解决方案。 【描述】"book-planner-backend:读书计划者"是一个专为热爱阅读的人设计的应用程序...
5. **分布式数据库**:随着云计算和大数据的发展,分布式数据库系统如Hadoop HBase、Cassandra等的介绍和实践应用可能是期刊的重点内容。 6. **数据库性能优化**:索引策略、查询优化、存储过程、分区策略等都是...
议程 公司简介 大数据与大数据技术 大数据技术应用 大数据案例分享 问题讨论 Advanced Analytic Service All Rights Reserved 2016 2 大数据与大数据技术(1)全文共58页,当前为第2页。 公司简介 公司概况&发展历史 ...
在"park美国峰会上几大顶级数据商精彩PPT分享"这一主题中,我们得以一窥全球顶尖数据商对于Spark技术的深入理解和应用实践。Spark作为一个强大的开源大数据处理框架,因其高效、易用和多功能性而备受青睐。下面,...
本次主要分享上汽集团对于Spark查询的优化思路。大数据量的精确查询是我们经常遇到的一类场景。为了解决此类问题,我们做了诸多实践。实践思路主要分为两类,一类主要着眼于物理层面,主要为了缩小数据源的范围,...
这场大会汇聚了国内外顶尖的数据库专家、大数据分析师以及行业内的领军人物,旨在分享最新的技术趋势、实践经验以及创新解决方案。参会者可以从中获取到宝贵的理论知识和实际操作经验,对提升个人和企业的技术能力...
分布式数据库如MySQL Cluster、Cassandra和MongoDB,它们能够处理海量数据并提供高可用性。分布式事务是保证数据一致性的重要手段,2PC(两阶段提交)、TCC(尝试、确认、补偿)和Saga等事务模型各有优缺点,需根据...