如何使用嵌入式Cassandra和Rexster设置Titan

时间:2014-05-22 01:25:09

标签: cassandra gremlin titan rexster

我正在尝试使用Cassandra嵌入式设置Titan(服务器0.4.4)。我的 环境是Windows 8.1 x64 + Cygwin。 安装在E:\ titan-server-0.4.4。

我还需要能够通过Rexster访问此设置。

对于我的配置,我提到了https://github.com/thinkaurelius/titan/wiki/Using-Cassandra。 我修改了图形配置     E:\泰坦服务器0.4.4 \的conf \ rexster-卡桑德拉 - es.xml 图表部分为 <graph> <graph-name>graph</graph-name> <graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type> <graph-read-only>false</graph-read-only> <properties>
<auto-type>none</auto-type> <storage.batch-loading>true</storage.batch-loading> <storage.cassandra-config-dir>file:///E:\titan-server-0.4.4\conf\cassandra.yaml</storage.cassandra-config-dir> <storage.backend>embeddedcassandra</storage.backend> <storage.index.search.backend>elasticsearch</storage.index.search.backend> <storage.index.search.directory>../db/es</storage.index.search.directory> <storage.index.search.client-only>false</storage.index.search.client-only> <storage.index.search.local-mode>true</storage.index.search.local-mode> </properties> <extensions> <allows> <allow>tp:gremlin</allow> </allows> </extensions> </graph>

(注意

<auto-type>none</auto-type> <storage.batch-loading>true</storage.batch-loading>

这些是允许批量插入。嵌入式Cassandra的整个想法是提高插入性能。)

但是,当我尝试使用./bin/titan.sh -v start启动服务时,启动失败并显示:

  

org.apache.cassandra.exceptions.ConfigurationException:   localhost / 127.0.0.1:7000正在被另一个进程使用。更改   listen_address:cassandra.yaml中的storage_port到没有的值   与其他服务冲突           在org.apache.cassandra.net.MessagingService.getServerSocket(MessagingService.java:439)           在org.apache.cassandra.net.MessagingService.listen(MessagingService.java:387)           在org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:549)           在org.apache.cassandra.service.StorageService.initServer(StorageService.java:514)           在org.apache.cassandra.service.StorageService.initServer(StorageService.java:411)           在org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:278)           在org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:366)           在org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:409)           在com.thinkaurelius.titan.diskstorage.cassandra.utils.CassandraDaemonWrapper.start(CassandraDaemonWrapper.java:51)           在com.thinkaurelius.titan.diskstorage.cassandra.embedded.CassandraEmbeddedStoreManager。(CassandraEmbeddedStoreManager.java:102)           at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)           at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)           at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)           at java.lang.reflect.Constructor.newInstance(Constructor.java:408)           在com.thinkaurelius.titan.diskstorage.Backend.instantiate(Backend.java:344)           在com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:367)           在com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:311)           在com.thinkaurelius.titan.diskstorage.Backend。(Backend.java:121)           at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:1173)           在com.thinkaurelius.titan.graphdb.database.StandardTitanGraph。(StandardTitanGraph.java:75)           在com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40)           在com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration.configureGraphInstance(TitanGraphConfiguration.java:25)           在com.tinkerpop.rexster.config.GraphConfigurationContainer.getGraphFromConfiguration(GraphConfigurationContainer.java:119)           在com.tinkerpop.rexster.config.GraphConfigurationContainer。(GraphConfigurationContainer.java:54)           在com.tinkerpop.rexster.server.XmlRexsterApplication.reconfigure(XmlRexsterApplication.java:99)           在com.tinkerpop.rexster.server.XmlRexsterApplication。(XmlRexsterApplication.java:47)           在com.tinkerpop.rexster.Application。(Application.java:96)           在com.tinkerpop.rexster.Application.main(Application.java:188)   localhost / 127.0.0.1:7000正在被另一个进程使用。更改   listen_address:cassandra.yaml中的storage_port到没有的值   与其他服务冲突

我试过mofiying“E:\ titan-server-0.4.4 \ conf \ cassandra.yaml”中的端口,但经过一番调查后,我意识到这个端口实际上是由Cassandra自己采取的,即在此配置,。/ bin / titan.sh -v start尝试启动Cassandra的多个实例?!

我使用不同的端口设置将cassandra.yaml复制到cassandra2.yaml,并在图形配置xml中指定了cassandra2.yaml的路径。 在此之后,我可以通过运行./bin/titan.sh -v start来启动带有Titan和Cassandra的Rexster。

但是,我坚信这种设置有问题。此外,系统表现不佳 - 有时我无法使用g.commit()在Rexster(基于Web)的Gremlin shell中保存图形 - 命令成功,但没有任何保存。

使用Cassandra嵌入运行Titan的正确方法是什么?应该是什么配置?

1 个答案:

答案 0 :(得分:3)

如果您通过shell或bat脚本使用Titan服务器,它将自动为您启动Titan实例并尝试通过localhost连接到它。 当您将其配置为使用Cassandra嵌入时,这两个实例自然会发生冲突。

您是否有特殊原因要使用Cassandra嵌入式。我强烈建议您先尝试开箱即用的版本。 Cassandra嵌入式主要用于低延迟应用程序,需要对JVM有充分的了解。

祝你好运!