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

关于Cassandra启动加载索引是报AssertionError的问题及解决

阅读更多

       

       系统环境:

        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索引,已经停止.zip

    stratio-cassandra, 支持 Cassandra Lucene索引,已经停止 此外,这个项目不再支持Cassandra索引,它完全保持了与 Apache Cassandra的插件相同的功能,而不是一个 fork 插件。 值得注意的是,插件发行版比 fork 更...

    Cassandra的数据模型介绍

    amily 是 Cassandra 数据模型的核心组成部分,用来组织和管理 Column 和 SuperColumn。在 Cassandra 中,一个 ColumnFamily 相当于传统数据库中的表,但它不遵循严格的行与列的关系,而是以键值对的形式存储数据,...

    基于Cassandra的可扩展分布式反向索引的构建.pdf

    分布式检索技术应运而生,其在数据存储的可扩展性和高效性方面提供了新的解决方案。NoSQL数据库正是在这样的背景下迅速发展起来的一种新型数据库,它不仅能够适应大规模数据和高并发的处理需求,还能够提供高可用性...

    docker-cassandra, 在 Docker的快速启动中,Cassandra.zip

    docker-cassandra, 在 Docker的快速启动中,Cassandra Docker 中的Cassandra这个库提供了在 Docker 中运行Cassandra所需的一切,并为快速的容器启动而调整。为什么?虽然天真的Cassandra图像大约需要 30秒的时间,...

    Cassandra在Windows上安装及使用方法

    启动过程中,Cassandra会显示一系列的日志信息,包括初始化、堆大小、加载配置文件等信息。 ### 高级配置与注意事项 - **性能优化**:根据服务器硬件配置调整Cassandra配置文件中的内存分配、磁盘I/O等参数,以...

    NoSQL数据库(如MongoDB,Cassandra):Cassandra的索引与性能优化.docx

    NoSQL数据库(如MongoDB,Cassandra):Cassandra的索引与性能优化.docx

    Cassandra在饿了么的应用

    这些内容将会涵盖Cassandra的技术原理、实际应用问题的解决方法,以及如何在大数据处理中发挥其作用。在实际应用中,饿了么可能遇到了诸多挑战,如数据一致性、系统扩展性、以及故障恢复等问题,通过使用Cassandra,...

    Learning Apache Cassandra 2015

    通过学习《Learning Apache Cassandra 2015》这本书,我们不仅能够了解到Cassandra的基本概念和特性,还能深入了解如何使用Cassandra解决实际问题,包括如何设计表结构、组织数据以及执行高效查询等。此外,书中还...

    apache-cassandra-3.11.13

    3.11.13版本可能加强了这些工具,以便更好地诊断和解决问题。 总之,"apache-cassandra-3.11.13"是一个强大且经过优化的数据库系统,适合处理大数据量的场景。它的设计目标是提供高可用性、可扩展性和高性能,这在...

    cassandra cql 3.1

    文档指导用户如何启动cqlsh(Cassandra Query Language Shell),这是Cassandra的一个交互式命令行工具,用于执行CQL命令。文档还涵盖了如何创建和更新键空间(keyspace),如何创建表(table),如何使用用户定义...

    cassandra权威指南(中文)

    - **案例分析**:通过具体实例展示Cassandra在实际项目中的应用,包括系统设计思路、遇到的问题及解决方案等。 #### 九、Cassandra社区与生态 - **社区资源**:介绍Cassandra官方社区网站、邮件列表、用户论坛等...

    cassandra-3.11.3下载

    Cassandra是一款分布式、高度可扩展的NoSQL数据库系统,由Facebook于2008年开源,并在随后被Apache软件基金会接纳为顶级项目。Cassandra的设计灵感来源于Google的Bigtable,旨在处理大规模的数据存储需求,特别适合...

    Learning_Apache_Cassandra

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

    Cassandra DataStax原理及安装

    在安装过程中可能会遇到各种问题,文档提供了故障排除的指南,帮助用户解决安装过程中可能遇到的困难。此外,还提供了使用OpsCenter创建集群的说明,以及通过DevCenter使用CQL脚本进行数据操作的教程。 整个文档...

    Cassandra_概要指南

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

    Cassandra文档

    - 安装与启动:文档会详细介绍在不同操作系统上安装和启动Cassandra的步骤。 - 配置文件:`cassandra.yaml`是主要的配置文件,包含节点间通信、数据存储、缓存策略等设置。 - 扩展与缩容:Cassandra允许在线添加...

    Cassandra JDBC Driver

    7. **异常处理**:当发生错误时,Cassandra JDBC Driver会抛出适当的JDBC异常,帮助开发者快速定位并解决问题。 8. **元数据支持**:驱动程序提供了获取表、列族(表的别名)、列等元数据的方法,方便开发者了解...

    利用Hilbert曲线与Cassandra技术实现时空大数据存储与索引.docx

    本文主要探讨了如何利用Hilbert曲线与Cassandra技术来解决这一问题。 Hilbert曲线是一种空间填充曲线,它能够将多维空间的数据映射到一维序列上,有效地解决了高维数据的存储和索引问题。这种曲线具有平移不变性和...

    cassandra-operator,apache-cassandra的kubernetes算子.zip

    【标题】:“Cassandra-Operator:Apache Cassandra在Kubernetes中的算子实现” 【内容】: Apache Cassandra是一款分布式NoSQL数据库系统,广泛应用于大数据存储和实时分析。为了在容器化环境中,特别是Kubernetes...

Global site tag (gtag.js) - Google Analytics