Java 缩放cassandra流错误(空指针异常)

Java 缩放cassandra流错误(空指针异常),java,nullpointerexception,cassandra,Java,Nullpointerexception,Cassandra,我们有一个带有单个节点的集群,它有大约40GB的数据。我们正在尝试扩展并向集群添加第二个节点,但无法做到这一点。 种子节点开始流式传输数据,但一段时间后抛出错误。 错误是: ERROR [STREAM-OUT-/10.0.0.166] 2016-06-21 12:18:40,300 StreamSession.java:520 - [Stream #862ed0e0-37a7-11e6-b0b9-3fa2170fe9a5] Streaming error occurred java.lang.N

我们有一个带有单个节点的集群,它有大约40GB的数据。我们正在尝试扩展并向集群添加第二个节点,但无法做到这一点。 种子节点开始流式传输数据,但一段时间后抛出错误。 错误是:

ERROR [STREAM-OUT-/10.0.0.166] 2016-06-21 12:18:40,300 StreamSession.java:520 - [Stream #862ed0e0-37a7-11e6-b0b9-3fa2170fe9a5] Streaming error occurred
java.lang.NullPointerException: null
    at org.apache.cassandra.db.SerializationHeader$Component.access$500(SerializationHeader.java:283) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.db.SerializationHeader$Serializer.serialize(SerializationHeader.java:430) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.messages.FileMessageHeader$FileMessageHeaderSerializer.serialize(FileMessageHeader.java:208) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.messages.OutgoingFileMessage.serialize(OutgoingFileMessage.java:84) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.messages.OutgoingFileMessage$1.serialize(OutgoingFileMessage.java:48) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.messages.OutgoingFileMessage$1.serialize(OutgoingFileMessage.java:40) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.messages.StreamMessage.serialize(StreamMessage.java:48) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.sendMessage(ConnectionHandler.java:363) ~[apache-cassandra-3.3.jar:3.3]
    at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:335) ~[apache-cassandra-3.3.jar:3.3]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_72-internal]
当我执行nodetool引导恢复时,它会再次开始流式传输数据,但在发生一些错误后会抛出相同的错误

cassandra 3.3中是否存在任何缺陷,或者我可能做错了什么。

关于这一点:

你检查过这个了吗,也许是可能的解决方案

  • 获取您的模式:descschema
  • 在新节点上使用cqlsh
  • 导入模式
  • 将新节点添加到集群
  • 或者您可以更新到Cassandra 3.4

    //编辑 桑耶夫修好了。SSTable不在卡桑德拉版本中

    nodetool upgradesstables
    
    已解决此问题。

    关于此问题:

    你检查过这个了吗,也许是可能的解决方案

  • 获取您的模式:descschema
  • 在新节点上使用cqlsh
  • 导入模式
  • 将新节点添加到集群
  • 或者您可以更新到Cassandra 3.4

    //编辑 桑耶夫修好了。SSTable不在卡桑德拉版本中

    nodetool upgradesstables
    
    已解决此问题。

    遇到类似问题

    根据我的日志:

    cat /var/log/cassandra/system.log
    
    发现:

    Caused by: java.io.FileNotFoundException: /home/cassandra/data/system/compactions_in_progress-55080ab05d9c388690a4acb25fe1f77b/system-compactions_in_progress-tmp-ka-72-Data.db (No space left on device)
    
    发布:

    df -h
    
    并检查cassandra的数据和CommitLog所在分区上的剩余空间。可能您使用的是默认值(/var/lib),并且根分区可能已满(在OS安装时通常默认为50GB,包括/var)

    希望有帮助。

    也遇到了类似的问题

    根据我的日志:

    cat /var/log/cassandra/system.log
    
    发现:

    Caused by: java.io.FileNotFoundException: /home/cassandra/data/system/compactions_in_progress-55080ab05d9c388690a4acb25fe1f77b/system-compactions_in_progress-tmp-ka-72-Data.db (No space left on device)
    
    发布:

    df -h
    
    并检查cassandra的数据和CommitLog所在分区上的剩余空间。可能您使用的是默认值(/var/lib),并且根分区可能已满(在OS安装时通常默认为50GB,包括/var)


    希望有帮助。

    你提到的罚单是针对不同的例外情况,而不是我得到的。是的,我知道,但你检查过了吗?两者都是完全不同的例外情况。在抛出异常之前,一些数据在节点之间传输。啊,好的。表中是否有空字段?可能传输将停止,因为行中有一个空字段。您是否检查过,可能是在新的clean development节点上,用空字符串覆盖它?我知道这不是很好,但当它有帮助时,它是一个可接受的解决方法。我不确定这一点,但应该有一种机制,它忽略空行/列数据。您提到的记录单是针对不同的异常,而不是我得到的。是的,我知道,但您检查过它吗?两者都是完全不同的异常。在抛出异常之前,一些数据在节点之间传输。啊,好的。表中是否有空字段?可能传输将停止,因为行中有一个空字段。您是否检查过,可能是在新的clean development节点上,用空字符串覆盖它?我知道这不是很好,但当它有帮助时,它是一个可接受的解决方法。我不确定这一点,但应该有一种机制,它忽略空的行/列数据。我遇到了同样的问题,我们可以通过引用这些链接来解决这些问题。[我也面临同样的问题,我们可以通过参考这些链接来解决这些问题[