2016-08-01 21 views
3

Twitter behauptet, dass einer der größten Vorteile von Apache Reiher im Vergleich zu Apache Sturm ist debug-ability und das wird erreicht, indem jeder Ausguss/Schraube Aufgabe auf eine Heron-Instanz (ein JVM-Prozess) statt mehrere Aufgaben zu bündeln ein JMV (wie Sturm es getan hat).debugging Apache Reiher sccheduler

Dieser Ansatz hilft wirklich beim Debugging von Topologien. Aber meine Frage ist, wie kann man versuchen, Core-Teile von Reiher wie Scheduler oder Ressourcen-Management-Teile zu debuggen. Gibt es eine Möglichkeit, dies anders als das Protokollieren/Drucken von Ausgaben zu tun? Denn dies ist ein Energie verbrauchender Prozess. Gibt es eine Möglichkeit, ein Tool wie eine IDE (z. B. IntelliJ) zu verwenden, um einige Checkpoints zu setzen und den gesamten Prozess der Aufgabenplanung in Reiher zu debuggen?

Vielen Dank im Voraus.

Antwort

0

Nachdem ich lange Zeit mit diesem Problem zu kämpfen hatte, habe ich endlich eine Antwort gefunden, mit der Hilfe von Heron-Entwicklern (Hut ab vor ihnen). Die Antwort ist Remote Debugging jvm Prozesse.

Ein Abschnitt zur Fehlerbehebung (siehe Debugging Java-Topologien bei this page) wurde Heron Dokumentation hinzugefügt, die die erforderlichen Anweisungen für die Remote-Debugging Reiher gibt. Es ist gut, aber nicht das, was ich brauchte, denn es ist nur für das Debuggen von Instanzen (Schrauben/Tüllen ...). Aber ich brauchte, um Debug-Kernteile wie Scheduler, Werfer usw.

Um eine volle Remote-Debugging für Reiher ermöglichen sollten Sie in zweiter Linie zum execute.py (hinzufügen können bei Reiher/Tools gefunden werden/cli/src/python) Datei:

java_opts = ['-D' + opt for opt in java_defines] 
//add this line here 
java_opts.append('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005') 

Adresse: der Hafen, die Sie in Ihrem IDE konfiguriert haben.

suspend: y bedeutet, dass die Ausführung angehalten wird, bis der Client (Debugger oder IDE) eine Verbindung zum Server herstellt (jvm-Prozess).

Sie finden Anweisungen zum Festlegen von Remote Debugging in Intellij in this link.

Wichtig: Vergessen Sie nicht, die Quell- und Installationspakete neu zu kompilieren. Compilieren und installieren Reiher

bazel build --config=ubuntu heron/... 
bazel run --config=ubuntu -- scripts/packages:heron-client-install.sh --user 
bazel run --config=ubuntu -- scripts/packages:heron-api-install.sh --user --maven 

Jetzt ist Ihre Checkpoints setzen, wohin Sie Ihr topologiy von Terminal wollen und senden und dann das Debuggen in IDE starten und es wird Sie zu den Checkpoints nehmen. Denken Sie daran, Checkpoints zum Ausführungspfad hinzuzufügen, SubmitterMain oder SchedulerMain können gute Kandidaten sein.