2

我正在尝试设置嵌入 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:\titan-server-0.4.4\conf\rexster-cassandra-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 正在被另一个进程使用。将 cassandra.yaml 中的 listen_address:storage_port 更改为不与 org.apache.cassandra.net.MessagingService.listen(MessagingService 的 org.apache.cassandra.net.MessagingService.getServerSocket(MessagingService.java:439) 中的其他服务冲突的值.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。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) at com.tinkerpop.rexster.Application.(Application.java:96) at com.tinkerpop.rexster.Application.main(Application.java:188) localhost/127.0.0.1:7000 正在使用中通过另一个过程。将 cassandra.yaml 中的 listen_address:storage_port 更改为不与其他服务冲突的值 tinkerpop.rexster.server.XmlRexsterApplication.(XmlRexsterApplication.java:47) at com.tinkerpop.rexster.Application.(Application.java:96) at com.tinkerpop.rexster.Application.main(Application.java:188) localhost/ 127.0.0.1:7000 正在被另一个进程使用。将 cassandra.yaml 中的 listen_address:storage_port 更改为不与其他服务冲突的值 tinkerpop.rexster.server.XmlRexsterApplication.(XmlRexsterApplication.java:47) at com.tinkerpop.rexster.Application.(Application.java:96) at com.tinkerpop.rexster.Application.main(Application.java:188) localhost/ 127.0.0.1:7000 正在被另一个进程使用。将 cassandra.yaml 中的 listen_address:storage_port 更改为不与其他服务冲突的值

我尝试在“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。

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

那么在嵌入 Cassandra 的情况下运行 Titan 的正确方法是什么?应该是什么配置?

4

1 回答 1

4

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

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

祝你好运!

于 2014-05-31T03:11:59.180 回答