Lucidworks Big Data & Oozie Workflow mit VizOozie

In diesem Beitrag erfahren Sie, wie Sie ein visualisiertes Workflow-Diagramm für Oozie erstellen können. Oozie ist ein Workflow-Management-System für Hadoop-Jobs.…

In diesem Beitrag erfahren Sie, wie Sie ein visualisiertes Workflow-Diagramm für Oozie erstellen können. Oozie ist ein Workflow-Management-System für Hadoop-Jobs. Oozie Workflow-Jobs sind DAGs (Directed Acyclical Graphs) von Aktionen: http://oozie.apache.org

Bei Lucidworks verwenden wir Oozie in unserem Produkt Lucidworks Big Data. Die Workflows, die wir mit der Plattform bereitstellen, werden mit Oozie konfiguriert und ausgeführt. Die Entwickler erstellen workflow.xml, Workflow-Definitionsdateien für Oozie, und stellen sie in Hadoop bereit. Eine gute Erklärung, wie das funktioniert, finden Sie hier:http://www.infoq.com/articles/oozieexample

Manche Workflows werden schnell kompliziert und können Sub-Workflows, Forks und Joins und andere Aktionen enthalten, die in XML nur schwer zu verfolgen sind. Ein Visualisierungstool würde dann dabei helfen, das Design von Workflows zu rationalisieren und schnell zu erfassen, was der Workflow im Wesentlichen tut.

VizOozie ist ein Open-Source-Tool, das Ihnen hilft, Ihre statischen xml-Workflow-Definitionen in Dot-Dateien zu konvertieren, die vom Graphviz-Dot-Programm zur Erstellung von pdf oder anderen Formaten verwendet werden können: http://www.graphviz.org/

Sie benötigen eine Unix-ähnliche Umgebung, Python und Graphviz Dot, um dies auszuführen.

Probieren Sie es von github aus und führen Sie es aus:

python vizoozie/vizoozie.py example/workflow.xml example/workflow.dot

oder verwenden Sie Ihre eigene Oozie-Workflow-xml-Datei.

Dadurch wird eine Dot-Datei erzeugt, die mit Dot leicht in ein PDF-Dokument konvertiert werden kann:

dot -Tpdf example/workflow.dot -o example/workflow.pdf

Für die Start-, End-, Prozess-, Join-, Fork- und Entscheidungsknoten werden Standard-Workflowformen verwendet. Die Farben der Aktionsknoten sind in der Datei vizoozie.properties konfigurierbar (z.B. ist die Java-Aktion blau).

Der Code ist ziemlich einfach. Er nimmt jeden Knotentyp und konvertiert xml mit xml.dom.minidom in einen Punktstring und gibt ihn aus. Nehmen wir zum Beispiel einen XML-Ausschnitt:

  <fork name="post-process">
    <path start="complex-math" />
    <path start="more-complex" />
    <path start="geek-candy-process" />
  </fork>

Der Code für einen Fork-Knoten sieht wie folgt aus:

    def processFork(self, doc):
        output = ''
        for node in doc.getElementsByTagName("fork"):
            name = self.getName(node)
            output += 'n' + name.replace('-', '_') + " [shape=octagon];n"
            for path in node.getElementsByTagName("path"):
                start = path.getAttribute("start")
                output += 'n' + name.replace('-', '_') + " -> " + start.replace('-', '_') + ";n"
        return output

In dieser Methode werden lediglich die Knotennamen mit name.replace(‚-‚, ‚_‘) normalisiert und eine bestimmte Knotenform eingefügt (shape=octagon). Dann wird einfach nach den Startpfaden des Forks gesucht, wie hier: <path start=“complex-math“ />. In unserem obigen Beispiel wird diese Methode eine Ausgabe wie diese erzeugen:

post_process [shape=octagon];
post_process -> complex_math;
post_process -> more_complex;
post_process -> geek_candy_process;

Wenn Sie es mit dem Programm dot verwenden, erzeugt es einen Gabelknoten mit drei Unterknoten. Ich hoffe, Sie finden diese Erklärung nützlich.

IP

You Might Also Like

KI-Agenten dominieren den Einkauf. Ist Ihre Website auf die KI-gestützte Suche vorbereitet?

Generative KI-Agenten wie ChatGPT definieren die Produktsuche neu. Erfahren Sie, wie Sie...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Quick Links