系统环境:
linux5.4 64位
jdk1.6.45 64位
Cassandra1.2.5
最近在使用Cassandra做一个通讯录的存储工作,通讯录表共建了三个二级索引,有三个复合主键,有一个功能就是根据某二级索引查询出相关的所有联系人,该二级索引的长度大约为32,可以看做是主键的一个子集。
建表语句如下:
CREATE TABLE contactsmimic ( owneruserid text, contactid text, phone text, label text,//use as timestamp for protoObj friendid text, ismutual int, phoneindex text, isdeleted int, Json blob, PRIMARY KEY (owneruserid, contactid, phone) ) ; CREATE INDEX relation_friendid ON contactsmimic (friendid); CREATE INDEX index_isdelete ON contactsmimic (isdeleted); CREATE INDEX relation_phoneindex ON contactsmimic (phoneindex);
数据量大概10万条左右,每次启动报如下错误:
INFO [SSTableBatchOpen:1] 2013-09-03 09:27:36,573 SSTableReader.java (line 169) Opening /var/lib/cassandra/data/contactks/cpmimic/contactks-cpmimic.cpmimic_friendid_idx-ic-1 (485779 bytes) ERROR [SSTableBatchOpen:1] 2013-09-03 09:27:36,573 CassandraDaemon.java (line 175) Exception in thread Thread[SSTableBatchOpen:1,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
而比较奇怪的是同样的数据放到32位机器上确没有任何错误。
解决过程也算费劲脑汁,升级JDK,升级Cassandra,升级glibc,升级操作系统,结果一无所获,要么索引直接失效,无法查询,要么加载失败。
就在快要放弃的时候,发现官网发布了Cassandra2.0.0,死马当活马医,权且一试,启动Cassandra,drop index,create index,还有nodetool rebuild_index,再重启,发现错误消失了,真是庆幸,但还不明确是哪一步使索引重建的。
还发现一个事情,Cassandra1.2*的索引文件是以ic为标识了,到了Cassandra2.0,是以ja为标识的。
最后,没有问题的部署环境如下:
Linux6.3 64位
JDK1.7.25 64位
Cassandra2.0.0
PS:当然以上不是解决问题的好方式,并没有找到根本问题,哪位大牛找到问题症结,请不吝赐教
相关推荐
stratio-cassandra, 支持 Cassandra Lucene索引,已经停止 此外,这个项目不再支持Cassandra索引,它完全保持了与 Apache Cassandra的插件相同的功能,而不是一个 fork 插件。 值得注意的是,插件发行版比 fork 更...
amily 是 Cassandra 数据模型的核心组成部分,用来组织和管理 Column 和 SuperColumn。在 Cassandra 中,一个 ColumnFamily 相当于传统数据库中的表,但它不遵循严格的行与列的关系,而是以键值对的形式存储数据,...
分布式检索技术应运而生,其在数据存储的可扩展性和高效性方面提供了新的解决方案。NoSQL数据库正是在这样的背景下迅速发展起来的一种新型数据库,它不仅能够适应大规模数据和高并发的处理需求,还能够提供高可用性...
docker-cassandra, 在 Docker的快速启动中,Cassandra Docker 中的Cassandra这个库提供了在 Docker 中运行Cassandra所需的一切,并为快速的容器启动而调整。为什么?虽然天真的Cassandra图像大约需要 30秒的时间,...
启动过程中,Cassandra会显示一系列的日志信息,包括初始化、堆大小、加载配置文件等信息。 ### 高级配置与注意事项 - **性能优化**:根据服务器硬件配置调整Cassandra配置文件中的内存分配、磁盘I/O等参数,以...
NoSQL数据库(如MongoDB,Cassandra):Cassandra的索引与性能优化.docx
这些内容将会涵盖Cassandra的技术原理、实际应用问题的解决方法,以及如何在大数据处理中发挥其作用。在实际应用中,饿了么可能遇到了诸多挑战,如数据一致性、系统扩展性、以及故障恢复等问题,通过使用Cassandra,...
通过学习《Learning Apache Cassandra 2015》这本书,我们不仅能够了解到Cassandra的基本概念和特性,还能深入了解如何使用Cassandra解决实际问题,包括如何设计表结构、组织数据以及执行高效查询等。此外,书中还...
3.11.13版本可能加强了这些工具,以便更好地诊断和解决问题。 总之,"apache-cassandra-3.11.13"是一个强大且经过优化的数据库系统,适合处理大数据量的场景。它的设计目标是提供高可用性、可扩展性和高性能,这在...
文档指导用户如何启动cqlsh(Cassandra Query Language Shell),这是Cassandra的一个交互式命令行工具,用于执行CQL命令。文档还涵盖了如何创建和更新键空间(keyspace),如何创建表(table),如何使用用户定义...
- **案例分析**:通过具体实例展示Cassandra在实际项目中的应用,包括系统设计思路、遇到的问题及解决方案等。 #### 九、Cassandra社区与生态 - **社区资源**:介绍Cassandra官方社区网站、邮件列表、用户论坛等...
Cassandra是一款分布式、高度可扩展的NoSQL数据库系统,由Facebook于2008年开源,并在随后被Apache软件基金会接纳为顶级项目。Cassandra的设计灵感来源于Google的Bigtable,旨在处理大规模的数据存储需求,特别适合...
从描述中我们可以得知,文档中可能包括了为什么选择Cassandra而不是其他数据库系统的比较,Cassandra提供的核心特性,例如水平扩展性、高可用性、写优化、结构化记录、二级索引、高效结果排序、即时一致性、可离散...
在安装过程中可能会遇到各种问题,文档提供了故障排除的指南,帮助用户解决安装过程中可能遇到的困难。此外,还提供了使用OpsCenter创建集群的说明,以及通过DevCenter使用CQL脚本进行数据操作的教程。 整个文档...
Cassandra是由Facebook于2007年开发的,最初用于电子邮件索引搜索等内部服务。2009年,Cassandra成为了Apache的孵化项目,现已成为云存储领域备受推崇的解决方案之一。Cassandra的核心特性在于其高可靠性、可伸缩性...
- 安装与启动:文档会详细介绍在不同操作系统上安装和启动Cassandra的步骤。 - 配置文件:`cassandra.yaml`是主要的配置文件,包含节点间通信、数据存储、缓存策略等设置。 - 扩展与缩容:Cassandra允许在线添加...
7. **异常处理**:当发生错误时,Cassandra JDBC Driver会抛出适当的JDBC异常,帮助开发者快速定位并解决问题。 8. **元数据支持**:驱动程序提供了获取表、列族(表的别名)、列等元数据的方法,方便开发者了解...
本文主要探讨了如何利用Hilbert曲线与Cassandra技术来解决这一问题。 Hilbert曲线是一种空间填充曲线,它能够将多维空间的数据映射到一维序列上,有效地解决了高维数据的存储和索引问题。这种曲线具有平移不变性和...
【标题】:“Cassandra-Operator:Apache Cassandra在Kubernetes中的算子实现” 【内容】: Apache Cassandra是一款分布式NoSQL数据库系统,广泛应用于大数据存储和实时分析。为了在容器化环境中,特别是Kubernetes...