2016-03-27 7 views
0

Ich benutze Titan 1.0 mit HBase-Backend und erstelle täglich Hunderte von Millionen Ecken und Kanten. ich die folgende Fehlermeldung empfangen wiederholt:TitanException: konnte keinen neuen ID-Block aus dem Speicher abrufen

TitanException: Could not acquire new ID from storage 

Nach einigen Recherchen konnte ich von mir Vertex-IDs generieren, aber ich bin immer noch die Zuordnungsfehler Zeuge während neue Kanten und Vertex Eigenschaften Hinzufügen.

Was kann ich tun, um dieses Problem zu lösen? Ist es möglich, Edge- und Property-IDs mit UUID, wie angeboten here? Beeinflusst es die Abfrageleistung?

Dank

Antwort

1

Nach ein paar Recherchen habe ich einige Einsichten gewonnen.

Auf Titan 1.0 wurde die Konfigurationseinstellung, die das Timeout für jede ID-Blockzuordnung festlegt, verschoben und heißt jetzt ids.authority.wait-time. Darüber hinaus können Sie den Wert für diese Option nicht über eine lokale Titan Eigenschaftendatei festlegen - sie muss global auf Ihrem Backend (in meinem Fall HBase) aktualisiert werden.

Der Standardwert für das Timeout ist 0.3 seconds - dies erklärt unsere häufigen Fehler. Nach dem Setzen des Wertes ist der Fehler viel seltener.

1

Ich war immer ähnliche Fehler und die Art, wie ich es zu beheben verwaltet wird durch die ID-Blockgröße erhöht wird, die jede Transaktion verwenden können. Dies hat den Trick für mich:

TitanGraph titanGraph = TitanFactory.open(config); 
graph.configuration().setProperty("ids.block-size", idBlockSize); 

Die Referenz doc here sagt folgendes über die ids.block-Größe zu verändern:

Global Reserve Graph-Element-IDs in Blöcken dieser Größe. Wenn Sie dies zu niedrig einstellen, werden Commits bei langsamen Reservierungsanforderungen häufig blockiert. Eine zu hohe Einstellung führt dazu, dass IDs verschwendet werden, wenn eine Grafikinstanz mit reservierten, aber größtenteils unbenutzten Blöcken heruntergefahren wird.

Verwandte Themen