我尝试用cassandra(linux)开始使用titan:
TitanFactory.Builder config = TitanFactory.build();
config.set("storage.backend", "embeddedcassandra");
config.set("storage.directory", DIRECTORY);
config.set("index." + INDEX_NAME + ".backend", "elasticsearch");
config.set("index." + INDEX_NAME + ".DIRECTORY", DIRECTORY + File.separator + "es");
config.set("index." + INDEX_NAME + ".elasticsearch.local-mode", true);
config.set("index." + INDEX_NAME + ".elasticsearch.client-only", false);
graph = config.open();
获取以下日志:
09:57:50.195 [main] ERROR o.a.c.config.DatabaseDescriptor - 致命 配置错误 org.apache.cassandra.exceptions.ConfigurationException:期望URI 在变量中:[cassandra.config]。请在文件前加上file:/// 对于本地文件或文件:///用于远程文件。中止。如果你 正在从外部工具执行此操作,需要进行设置 Config.setClientMode(true)以避免加载配置。在 org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:73) 〜[cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:84) 〜[cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161) 〜[cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.config.DatabaseDescriptor。(DatabaseDescriptor.java:136) 〜[cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:164) [cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:537) [cassandra-all-2.1.9.jar:2.1.9] at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:626) [cassandra-all-2.1.9.jar:2.1.9] at com.thinkaurelius.titan.diskstorage.cassandra.utils.CassandraDaemonWrapper.start(CassandraDaemonWrapper.java:75) [titan-cassandra-1.0.0.jar:na] at com.thinkaurelius.titan.diskstorage.cassandra.embedded.CassandraEmbeddedStoreManager。(CassandraEmbeddedStoreManager.java:81) [titan-cassandra-1.0.0.jar:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) [na:1.8.0_112] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [na:1.8.0_112] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [na:1.8.0_112] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [na:1.8.0_112] at com.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:44) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:473) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:407) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration。(GraphDatabaseConfiguration.java:1320) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:94) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:84) [titan-core-1.0.0.jar:na] at com.thinkaurelius.titan.core.TitanFactory $ Builder.open(TitanFactory.java:139) [titan-core-1.0.0.jar:na] at main.java.com.bag.server.database.TitanDatabaseAccess.start(TitanDatabaseAccess.java:68) [main /:na] at main.java.com.bag.server.TestServer。(TestServer.java:105) [main /:na] at main.java.com.bag.server.TestServer.main(TestServer.java:428) [main /:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)〜[na:1.8.0_112] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[na:1.8.0_112] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[na:1.8.0_112] at java.lang.reflect.Method.invoke(Method.java:498) 〜[na:1.8.0_112] at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) [idea_rt.jar:NA]
答案 0 :(得分:4)
Embedded Cassandra要求您指定其配置文件的位置(cassandra.yaml)。来自documentation:
在嵌入模式下运行Titan时,Cassandra yaml文件是 使用其他配置选项进行配置 storage.conf-file,它将yaml文件指定为完整的URL,例如 storage.conf-file = file:///home/cassandra.yaml。
根据您要实现的目标,并且由于您无法完全在内存中运行(Elasticsearch),您可能会考虑使用berkeleyje
作为存储后端。 Berkeley DB for Titan基本上是零配置。您所需要做的就是指定存储目录。例如。
storage.backend=berkeleyje
storage.directory=${java.io.tmpdir}/${storage.dir}
当然,您可以随意将存储目录放在任何地方。
index backend独立于持久性后端,需要自己的配置,具体取决于您选择的后端。同样,根据你想要实现的目标,你可以从没有开始。 Titan的等式比较索引为natively supported,您不需要外部搜索索引。 谨防这个开放的Titan issue。搜索索引不能保证始终与图表同步。