Cassandra节点启动失败,报Unknown type异常的技术求助
Cassandra节点启动失败:Unknown type
datakeyspace.identificationtype 异常分析 如果你遇到Cassandra节点启动失败,抛出Unknown type datakeyspace.identificationtype的异常,这是典型的Schema加载失败问题,下面是详细的问题拆解和原因分析:
完整错误堆栈
[main] 2018-01-09 04:08:58,733 CassandraDaemon.java:705 - 启动过程中遇到异常 Cassandra节点无法启动,抛出如下异常: org.apache.cassandra.exceptions.InvalidRequestException: Unknown type datakeyspace.identificationtype at org.apache.cassandra.cql3.CQL3Type$Raw$RawUT.prepare(CQL3Type.java:768) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.cql3.CQL3Type$Raw.prepareInternal(CQL3Type.java:537) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.Types$RawBuilder$RawUDT.lambda$prepare$2(Types.java:313) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_112] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[na:1.8.0_112] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_112] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_112] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_112] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_112] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_112] at org.apache.cassandra.schema.Types$RawBuilder$RawUDT.prepare(Types.java:314) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.Types$RawBuilder.build(Types.java:263) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.SchemaKeyspace.fetchTypes(SchemaKeyspace.java:979) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:950) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:928) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:916) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:91) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:81) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:262) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:476) ~[dse-core-5.1.5.jar:5.1.5] at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:599) ~[cassandra-all-3.11.0.1900.jar:3.11.0.1900] at com.datastax.bdp.DseModule.main(DseModule.java:93) [dse-core-5.1.5.jar:5.1.5]
核心原因解析
这个异常的本质是:Cassandra在启动时加载磁盘上的Schema定义时,发现了一个不存在或无法识别的自定义类型(UDT)——datakeyspace.identificationtype。
具体来说:
- 堆栈中显示异常发生在
Schema.loadFromDisk阶段,也就是节点尝试从本地磁盘加载已有的数据库模式时 - 当处理到
datakeyspace键空间下的identificationtype类型时,系统找不到该类型的有效定义,可能是因为该类型被误删除、定义损坏,或者节点间Schema同步出现了问题 - 由于Schema加载是节点启动的关键步骤,一旦失败,节点就无法完成启动流程
内容的提问来源于stack exchange,提问作者vlsomisetty
相关产品推荐
相关产品推荐

