2016-11-18 4 views
1

I versucht beginnend mit titan cassandra (Linux):Cassandra, Titan, Fatal Konfigurationsfehler

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(); 

Erste das folgende Protokoll:

09: 57: 50,195 [Main] ERROR oacconfig. DatabaseDescriptor - Fatal Konfigurationsfehler org.apache.cassandra.exceptions.ConfigurationException: URI Erwartet in Variable: [cassandra.config]. Bitte setzen Sie die Datei mit file: /// für lokale Dateien oder file: /// für entfernte Dateien. Abbrechen. Wenn Sie werden diese von einem externen Tool ausgeführt wird, muss es Config.setClientMode (true) gesetzt Ladekonfiguration zu vermeiden. bei org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL (YamlConfigurationLoader.java:73) ~ [cassandra-all-2.1.9.jar: 2.1.9] bei org.apache.cassandra.config.YamlConfigurationLoader.loadConfig (YamlConfigurationLoader.java:84) ~ [cassandra-all-2.1.9.jar: 2.1.9] um org.apache.cassandra.config.DatabaseDescriptor.loadConfig (DatabaseDescriptor.java:161) ~ [cassandra-all -2.1.9.jar: 2.1.9] unter org.apache.cassandra.config.DatabaseDescriptor. (DatabaseDescriptor.java:136) ~ [cassandra-all-2.1.9.jar: 2.1.9] unter org .apache.cassandra.service.CassandraDaemon.setup (CassandraDaemon.java:164) [cassandra-all-2.1.9.jar: 2.1.9] bei org.apache.cassandra.ser vice.CassandraDaemon.activate (CassandraDaemon.java:537) [cassandra-all-2.1.9.jar: 2.1.9] um org.apache.cassandra.service.CassandraDaemon.main (CassandraDaemon.java:626) [ cassandra-all-2.1.9.jar: 2.1.9] unter com.thinkaurelius.titan.diskstorage.cassandra.utils.CassandraDaemonWrapper.start (CassandraDaemonWrapper.java:75) [titan-cassandra-1.0.0.jar: na] bei com.thinkaurelius.titan.diskstorage.cassandra.embedded.CassandraEmbeddedStoreManager (CassandraEmbeddedStoreManager.java:81) [titan-cassandra-1.0.0.jar: na.] bei sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Muttersprache Methode) [Na: 1.8.0_112] bei sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl. Java: 62) [na: 1.8.0_112] bei sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) [Na: 1.8.0_112] bei java.lang.reflect.Constructor.newInstance (Constructor. java: 423) [na: 1.8.0_112] um com.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate (ConfigurationUtil.java:44) [titan-core-1.0.0.jar: na] um com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass (Backend.java:473) [titan-core-1.0.0.jar: na] um com.thinkaurelius.titan.diskstorage.Backend.getStorageManager (Backend.java: bei com.thinkaurelius.titan.graphdb.configur: 407) [na titan-core-1.0.0.jar] ation.GraphDatabaseConfiguration. (GraphDatabaseConfiguration.java:1320) [titan-core-1.0.0.jar: na] um com.thinkaurelius.titan.core.TitanFactory.open (TitanFactory.java:94) [titan-core -1.0.0.jar: na] um com.thinkaurelius.titan.core.TitanFactory.open (TitanFactory.java:84) [titan-core-1.0.0.jar: na] um com.thinkaurelius.titan .core.TitanFactory $ Builder.open (TitanFactory.java:139) [titan-core-1.0.0.jar: na] unter main.java.com.bag.server.database.TitanDatabaseAccess.start (TitanDatabaseAccess.java: 68) [main /: na] unter main.java.com.bag.server.TestServer. (TestServer.java:105) [main /: na] unter main.java.com.bag.server .TestServer.main (TestServer.java:428) [main /: na] bei sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Methode) ~ [na: 1.8.0_112] unter sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl .java: 62) ~ [na: 1.8.0_112] unter sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) ~ [na: 1.8.0_112] at java.lang.reflect.Method.invoke (Methode.java:498) ~ [na: 1.8.0_112] um com.intellij.rt.execution.application.AppMain.main (AppMain.java:147) [idee_rt.jar: na]

Antwort

4

In Embedded Cassandra müssen Sie angeben, wo die Konfigurationsdatei (cassandra.yaml) gefunden werden kann. Von der documentation:

Wenn im eingebetteten Modus Titan ausgeführt wird, die Cassandra yaml Datei ist konfiguriert mit der zusätzlichen Konfigurationsoption storage.conf-Datei, die die yaml Datei als vollständige URL angibt, z.B. storage.conf-file = Datei: ///home/cassandra.yaml.

Je nachdem, was Sie versuchen, Sie zu erreichen und wie sie sowieso nicht vollständig im Speicher ausgeführt wird (Elasticsearch) bietet sich die berkeleyje als Speicher-Backend zu verwenden. Berkeley DB für Titan ist im Wesentlichen Null-Konfiguration. Sie müssen lediglich das Speicherverzeichnis angeben. Z.B.

storage.backend=berkeleyje 
storage.directory=${java.io.tmpdir}/${storage.dir} 

Natürlich können Sie das Speicherverzeichnis frei platzieren, wo immer Sie möchten.

Die index backend ist unabhängig vom Persistenz-Backend und erfordert eine eigene Konfiguration, abhängig davon, welches Backend Sie wählen. Je nachdem, was Sie erreichen möchten, können Sie auch ohne starten. Indizes für Gleichheitsvergleiche sind natively supported von Titan, Sie benötigen dafür keinen externen Suchindex. Vorsicht vor diesem Öffnen Titan issue. Es ist nicht garantiert, dass der Suchindex jederzeit mit dem Diagramm synchron ist.

+0

Wie ich einige Benchmarks auf meinem Projekt ausführen werde. Was ist das schnellste Speicher-Back-End? – user2524707

+0

Das hängt von Ihren Nutzungsmustern ab. Z.B. C * ist für schreibintensive Arbeitslasten optimiert. Zur gleichen Zeit ist es nicht so gut, wenn Sie regelmäßig eine Menge Daten löschen. Da Titan niemals eine Kante aktualisiert, sondern sie löscht und neu erstellt, wäre dies kein gutes Verwendungsmuster für ein C * -Backend. Ich würde einfach mit dem Backend beginnen, das am einfachsten zu verwenden ist. Welches wären die "inmemory" - und "berkeleyje" -Speicher-Backends. – Ralf

+0

Ich werde lesen, schreiben, löschen viele Knoten und Beziehungen. Wahrscheinlich viel gelesen. Ich muss jedoch Java verwenden, um darauf zuzugreifen. – user2524707