【问题标题】:Unable to connect to remote cassandra from titan无法从 Titan 连接到远程 cassandra
【发布时间】:2014-05-22 05:35:53
【问题描述】:

我正在使用 cassandra 2.0.7 坐在远程服务器上侦听非默认端口

<code>
---cassandra.yaml
rpc_address: 0.0.0.0
rpc_port: 6543
</code>

我正在尝试使用以下配置使用 titan-0.4.4(java API,也尝试使用 rexster)连接到服务器:

<code>
storage.hostname=172.182.183.215
storage.backend=cassandra
storage.port=6543
storage.keyspace=abccorp
</code>

它没有连接,我在下面看到以下异常。但是,如果我在尝试执行代码/rexster 的同一主机上使用 cqlsh,则可以毫无问题地连接。有人看过吗?

<code>
0    [main] INFO  com.netflix.astyanax.connectionpool.impl.ConnectionPoolMBeanManager  - Registering mbean: com.netflix.MonitoredResources:type=ASTYANAX,name=ClusterTitanConnectionPool,ServiceType=connectionpool
49   [main] INFO  com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor  - AddHost: 172.182.183.215
554  [main] INFO  com.netflix.astyanax.connectionpool.impl.ConnectionPoolMBeanManager  - Registering mbean: com.netflix.MonitoredResources:type=ASTYANAX,name=KeyspaceTitanConnectionPool,ServiceType=connectionpool
555  [main] INFO  com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor  - AddHost: 172.182.183.215
999  [main] INFO  com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor  - AddHost: 127.0.0.1
1000 [main] INFO  com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor  - RemoveHost: 172.182.183.215
2366 [main] INFO  com.thinkaurelius.titan.diskstorage.Backend  - Initiated backend operations thread pool of size 16
41523 [RingDescribeAutoDiscovery] WARN  com.netflix.astyanax.impl.RingDescribeHostSupplier  - Failed to get hosts from abccorp via ring describe.  Will use previously known ring instead
61522 [RingDescribeAutoDiscovery] WARN  com.netflix.astyanax.impl.RingDescribeHostSupplier  - Failed to get hosts from abccorp via ring describe.  Will use previously known ring instead
63080 [main] INFO  com.thinkaurelius.titan.diskstorage.util.BackendOperation  - Temporary storage exception during backend operation. Attempting backoff retry
com.thinkaurelius.titan.diskstorage.TemporaryStorageException: Temporary failure in storage backend
    at com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxOrderedKeyColumnValueStore.getNamesSlice(AstyanaxOrderedKeyColumnValueStore.java:138)
    at com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxOrderedKeyColumnValueStore.getSlice(AstyanaxOrderedKeyColumnValueStore.java:88)
    at com.thinkaurelius.titan.graphdb.configuration.KCVSConfiguration$1.call(KCVSConfiguration.java:70)
    at com.thinkaurelius.titan.graphdb.configuration.KCVSConfiguration$1.call(KCVSConfiguration.java:64)
    at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:30)
    at com.thinkaurelius.titan.graphdb.configuration.KCVSConfiguration.getConfigurationProperty(KCVSConfiguration.java:64)
    at com.thinkaurelius.titan.diskstorage.Backend.initialize(Backend.java:277)
    at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:1174)
    at com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.<init>(StandardTitanGraph.java:75)
    at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40)
    at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:29)
    at com.abccorp.grp.graphorm.GraphORM.<init>(GraphORM.java:23)
    at com.abccorp.grp.graphorm.GraphORM.getInstance(GraphORM.java:47)
    at com.abccorp.grp.utils.dataloader.MainLoader.main(MainLoader.java:150)
Caused by: com.netflix.astyanax.connectionpool.exceptions.NoAvailableHostsException: NoAvailableHostsException: [host=None(0.0.0.0):0, latency=0(0), attempts=0]No hosts to borrow from
    at com.netflix.astyanax.connectionpool.impl.RoundRobinExecuteWithFailover.<init>(RoundRobinExecuteWithFailover.java:30)
    at com.netflix.astyanax.connectionpool.impl.TokenAwareConnectionPoolImpl.newExecuteWithFailover(TokenAwareConnectionPoolImpl.java:83)
    at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:256)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4.execute(ThriftColumnFamilyQueryImpl.java:519)
    at com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxOrderedKeyColumnValueStore.getNamesSlice(AstyanaxOrderedKeyColumnValueStore.java:136)
    ... 13 more
91522 [RingDescribeAutoDiscovery] WARN  com.netflix.astyanax.impl.RingDescribeHostSupplier  - Failed to get hosts from abccorp via ring describe.  Will use previously known ring instead
121522 [RingDescribeAutoDiscovery] WARN  com.netflix.astyanax.impl.RingDescribeHostSupplier  - Failed to get hosts from abccorp via ring describe.  Will use previously known ring instead
</code>

非常感谢任何帮助。我正在评估 cassandra 上的 Titan 并且有点坚持,因为之前我在 localhost 上使用 cassandra(相同版本)并且一切都很好。

谢谢

【问题讨论】:

    标签: java cassandra titan


    【解决方案1】:

    在配置中将 listen_address 更改为 172.182.183.215 已经成功了。最初并不清楚仅设置 rpc_address 是否足够。

    【讨论】:

    • Matthias Broecheler 发表了一条评论,说您不应该将本地泰坦与远程 cassandra 连接起来(这是我们在这里尝试做的)......所以,我们怎么样应该这样做吗? github.com/thinkaurelius/titan/issues/813
    【解决方案2】:

    Thrift 和支持 Thrift 的驱动程序自 C* 1.2 起已弃用。您应该切换到 DataStax Java 驱动程序(当前为 2.0.2)。

    或者,确保在 cassandra.yaml 中正确设置 start_rpc: 真

    【讨论】:

    • titan 是否使用/计划使用 datastax 驱动程序?由于我使用 Titan API 连接到 C*,因此我依赖于堆栈。
    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 2016-11-27
    • 2012-07-24
    • 2014-07-28
    • 1970-01-01
    • 2018-10-12
    • 2017-12-23
    • 2016-09-25
    相关资源
    最近更新 更多