Cassandra,Titan,致命配置错误

时间:2016-11-18 11:55:03

标签: java linux cassandra titan

我尝试用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]

1 个答案:

答案 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。搜索索引不能保证始终与图表同步。