首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接时出现Titan后端异常

连接时出现Titan后端异常
EN

Stack Overflow用户
提问于 2015-07-20 17:49:55
回答 1查看 1.1K关注 0票数 0

我使用的是Titan 0.54和Cassandra 2.1.6。

我已经编写了一个Java程序,它能够连接到Titan并在本地Cassandra集群上运行工作负载。当我试图在另一台机器(带有自己的集群)上运行相同的软件时,我得到了下面的错误( storage.backend设置为"cassandrathrift"):

代码语言:javascript
复制
Exception in thread "main" com.thinkaurelius.titan.core.TitanException: Could not execute operation due to backend exception
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:144)
    at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.get(KCVSConfiguration.java:92)
    at com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration.isFrozen(BasicConfiguration.java:93)
    at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1289)
    at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:93)
    at com.thinkaurelius.titan.core.TitanFactory$Builder.open(TitanFactory.java:134)
    at com.x.tweetgraph.writer.graph.TitanConnector.getConnection(TitanConnector.java:17)
    at com.x.tweetgraph.writer.graph.GraphManager.loadGraph(GraphManager.java:186)
    at com.x.tweetgraph.writer.graph.GraphManager.init(GraphManager.java:99)
    at com.x.tweetgraph.writer.graph.Main.main(Main.java:26)
Caused by: com.thinkaurelius.titan.diskstorage.PermanentBackendException: Permanent failure in storage backend
    at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.convertException(CassandraThriftKeyColumnValueStore.java:249)
    at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:148)
    at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:91)
    at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice(CassandraThriftKeyColumnValueStore.java:80)
    at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration$1.call(KCVSConfiguration.java:95)
    at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration$1.call(KCVSConfiguration.java:92)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:133)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation$1.call(BackendOperation.java:147)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)
    ... 10 more
Caused by: TimedOutException()
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696)
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633)
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741)
    at org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725)
    at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:129)
    ... 18 more

将storage.backend设置为"cassandra“后,我得到以下结果:

代码语言:javascript
复制
Caused by: TimedOutException()
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696)
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633)
    at org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741)
    at org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4$1.internalExecute(ThriftColumnFamilyQueryImpl.java:533)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4$1.internalExecute(ThriftColumnFamilyQueryImpl.java:530)
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
    ... 24 more

这两个选项都适用于我的本地设置(单节点Cassandra集群)。来自cassandra.yaml:

代码语言:javascript
复制
listen_address: 136.225.5.31
start_native_transport: true
native_transport_port: 12742
start_rpc: true
rpc_address: 136.225.5.31
rpc_port: 12760

我尝试连接的设置是一个三节点集群:

代码语言:javascript
复制
listen_interface: eth1
start_native_transport: true
native_transport_port: 12742
start_rpc: true
rpc_interface: eth1
rpc_port: 12760

在第一个设置中,我使用rpc_address + rpc_port获得了Titan连接,但是当我在第二个设置中尝试时,我得到了上面的错误。

我是否需要使用与storage.hostname的节点IP不同的设置来说明在第二次设置中指定的rpc_interface而不是rpc_address?或者问题出在哪里?

我可以使用cqlsh (以及我编写的其他软件)连接到第二个集群,所以这不是集群的问题。

EN

回答 1

Stack Overflow用户

发布于 2015-07-21 17:58:26

我设法解决了这个问题。

我忽略了在TitanFactory.build()中设置storage.cassandra.replication-factor属性,所以Titan使用了默认的复制因子1,它适用于我的单节点测试集群。显然,这三个节点中的一个出现了问题,所以我在每个节点上运行了nodetool修复,并将storage.cassandra.replication-factor设置为3。这解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31513405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档