2016-03-22 6 views
2

Zum Beispiel, wenn ich BatchWriter verwenden, um in accumulo zu schreiben, ich den Code wie folgt verwenden:Accumulo BatchWriter close() stecken für immer

BatchWriter writer = 
    conn.createBatchWriter("table", memBuf, timeout, numThreads) 

writer.add(mutation); 
writer.close(); 

ich, dass die Java-Code in „writer.close stecken heraus () "wenn ich" writer.add (mutation) "habe. Aber wenn ich "writer.add (mutation);" lösche, ging es durch "writer.close()". Kann jemand das BatchWriter-close() Problem lösen?

Antwort

2

Überprüfen Sie den Accumulo-Monitor auf Fehler. Wenn Sie nur eine Mutation hinzufügen, wird sie an die Server gesendet, wenn Sie den BatchWriter schließen (Mutationen werden aus Leistungsgründen zusammengebündelt). Ihr Client wartet wahrscheinlich auf eine Antwort von mindestens einem TabletServer.

Sie können auch einen Stackdump von Ihrem Client und von Ihrem Tabletserver (s) abholen, um anzuzeigen, wo der Code gerade hängt (z. B. mit jstack).

+0

Danke für Ihre Antwort. Ja, sagte mein Kollege besser die Tserver Logs und es hilft definitiv. Mein Problem war, dass ich einen schlechten Tisch in Accumulo hatte. Wenn ich versuche, eine Mutation zu schreiben, hängt es einfach und hat keine Protokolle in der Konsole abgelegt. Nach dem Löschen der fehlerhaften Tabelle und dem Erstellen der neuen Tabelle wurde das Problem behoben. – user3502577

+0

Seltsam, welche Version von Accumulo? Wenn Sie immer noch die Accumulo-Logs haben, können Sie uns gerne eine Nachricht an [email protected] senden oder ein Problem auf unserer JIRA https://issues.apache.org/jira/browse/ACCUMULO – elserj

+0

erstellen Meine Version ist 1.6 .5. Ich habe die tserver-Logs überprüft, eigentlich habe ich nichts gefunden, was mit der schlechten Tabelle zusammenhängt. Wenn die Tabelle schlecht war, wurde es einfach still, was keine gute Sache ist ... Ich kann keine Ausnahmen in meiner Konsole sehen, weder Fehler noch Warnungen bezüglich dieser schlechten Tabelle in acumulo Monitor- oder Tserver-Logs. Hoffentlich hilft dir das, accumulo zu verbessern :) – user3502577

3

(Hinweis: Nicht genug rep als Kommentar hinzuzufügen.)

Einen zusätzlichen Debug-Tipp: Verwenden der accumulo Shell Sie auf Debug-Modus (Typ debug in dem accumulo Shell) drehen können; Dann können Sie eine manuelle Eingabe des Schlüssels oder auch nur einen einfachen Scan der Zeile versuchen, in die Sie einfügen möchten. Die Debug-Info gibt die Reihenfolge der Server aus, mit denen accumulo kommuniziert, um Ihre Befehle auszuführen. Dies kann Sie schnell auf den Hostcomputer verweisen, der ein Problem hat.