Die Notwendigkeit von Big-Data-Debugging

February 17, 2023
-
Dr. Jorge Quiane
-

Da der Bereich der Big-Data-Verarbeitung weiter wächst, wachsen auch die Herausforderungen beim Debuggen komplexer, verteilter Datenverarbeitungssysteme. Herkömmliche Debugging-Ansätze, die für „kleine Daten“ -Anwendungen konzipiert wurden, reichen für den Umfang und die Komplexität von Big-Data-Systemen oft nicht aus. Daher stehen Programmierer von Big-Data-Anwendungen vor einer Reihe einzigartiger Herausforderungen, die neue Debugging-Ansätze erfordern.

Die Evolution des Data Debuggings

Frameworks wie Apache Spark, Apache Flink und Apache Wayang (Incubating) haben die Verarbeitung großer Datenmengen erheblich vereinfacht. Allerdings Debuggen großer Datenmengen steckt noch in den Kinderschuhen. Angenommen, eine analytische Aufgabe mit einem Terabyte an Daten hat nicht die erwarteten Ergebnisse erbracht. Es gibt zwei gängige, aber ineffektive Ansätze zum Debuggen dieser analytischen Aufgabe:

  • Herkömmliche Debugging-Tools: Beim ersten Ansatz werden die für das Debugging von „Small Data“ entwickelten Tools auf Big Data übertragen. Man könnte einen Debugger an einen entfernten Spark-Prozess anhängen und die traditionellen Mechanismen ausprobieren, wie z. B. das Vergeben von Watchpoints, das Anhalten der Spark-Laufzeit und das zeilenweise Durchführen des Codes. Dieser Ansatz ist teuer, da er dazu führt, dass die gesamte Spark-Laufzeit unterbrochen wird. Darüber hinaus kann man aufgrund der Größe der Daten nicht einfach den Code durchgehen und sich die Zwischenergebnisse für jedes Tupel ansehen. Das ist extrem zeitaufwändig.
  • Lokale Maschinenbewertung: Der zweite Ansatz versucht, die Aufgabe auf einem lokalen Computer anhand einer Stichprobe des Eingabedatensatzes zu evaluieren. Dies basiert auf der Tatsache, dass fehlerhafte Ausgaben in der Regel durch einen kleinen Teil der Daten ausgelöst werden. Daher könnte man eine Stichprobe des Eingabedatensatzes nehmen und sie auf einem lokalen Computer auswerten. Wenn die Stichprobe das Problem nicht auslöst, versuchen Sie es mit einer größeren Stichprobe usw. Irgendwann werden die Daten zu groß, um sie auf einem einzelnen Computer zu speichern und/oder herkömmliche Debugging-Techniken zu verwenden. Auch dieser Ansatz ist zum Scheitern verurteilt.

Wir machen die folgenden drei Beobachtungen:

  • Die meisten Bugs werden oft durch das Zusammenspiel von Code und Daten verursacht. Herkömmliche Debugging-Tools sind für das Code-Debugging und nicht für das Daten-Debugging konzipiert.
  • Herkömmliche Debugging-Tools eignen sich nicht für verteiltes Debugging. Typische Datenverarbeitungsaufträge umfassen Hunderte von Aufgaben, die von Dutzenden von Mitarbeitern ausgeführt werden und eine riesige Menge an Zwischendaten generieren.
  • Aktuelle Versuche zum Debuggen von Big Data sind ad hoc, aufgabenspezifisch und unflexibel. Es besteht Bedarf an einer Abstraktion, die das verteilte Debugging an Codedaten adressiert und gleichzeitig die interne Komplexität des Systems verbirgt.

Herausforderungen beim Datendebuggen

Eine der größten Herausforderungen beim Big-Data-Debugging ist das Zusammenspiel von Code und Daten. Die meisten Fehler werden durch komplexe Interaktionen zwischen Code und den riesigen Datenmengen verursacht, die verarbeitet werden. Herkömmliche Debugging-Tools sind jedoch für das Code-Debugging und nicht für das Daten-Debugging konzipiert. Darüber hinaus sind Big-Data-Systeme von Natur aus verteilt und umfassen Hunderte von Aufgaben, die von Dutzenden von Mitarbeitern ausgeführt werden und eine riesige Menge an Zwischendaten generieren. Herkömmliche Debugging-Tools eignen sich nicht für verteiltes Debugging, und die jüngsten Versuche zum Debuggen großer Datenmengen waren ad hoc, aufgabenspezifisch und unflexibel.

Daten-Debugging-Modi

Wie bereits erwähnt, kann das Debuggen von Big-Data-Jobs eine herausfordernde Aufgabe sein, insbesondere wenn es sich um ein großes System handelt. In der Welt der großen Datenmengen werden häufig zwei Hauptmodi des Debuggings verwendet: Online- und Post-hoc-Modus. In diesem Beitrag werden wir jeden dieser Modi im Detail besprechen und ihre Stärken und Grenzen hervorheben.

Online-Modus. Das Online-Debugging findet statt, wenn der Hauptdatenflussauftrag noch aktiv ist. Benutzer können die Zwischenergebnisse überprüfen und das Debuggen nach Versuch und Irrtum durchführen. Die Bereitstellung einer solchen Echtheit ist eine ziemliche Herausforderung, da gängige Datenverarbeitungssysteme im Batch-Modus arbeiten. Wenn der Datenfluss-Job unterbrochen wird, könnte dies möglicherweise die von Tausenden von Arbeitern ausgeführte Berechnung unterbrechen. Dies führt zu einem verringerten Durchsatz und einer Verschwendung von Verarbeitungsressourcen. Im Idealfall sollte der Online-Modus:

  • Erlauben Sie einem Benutzer, Zwischenergebnisse mit oder ohne Unterbrechung der Datenflussausführung zu überprüfen.
  • Stellen Sie eine Reihe von Primitiven bereit, damit ein Benutzer Zwischendaten auswählen kann, die für das programmgesteuerte Debuggen relevant sind.

Sehr wenige Systeme bieten Unterstützung für Online-Big-Data-Debugging.

Post-hoc-Modus. Dies ist der gängigste Modus für das Debuggen von Big Data. Benutzer instrumentieren den Hauptdatenflussjob so, dass Informationen in ein Protokoll geschrieben werden. Anschließend kann ein weiterer Job (z. B. in Spark) geschrieben werden, um das Protokoll zu analysieren und das Problem zu identifizieren. Dieser Ansatz der Verwendung von Protokolldateien ist zwar üblich, reicht aber oft nicht aus. Dies liegt daran, dass in den Protokollen keine logische Ansicht verfügbar ist, z. B. welche Eingabedatensätze zu einem bestimmten Zwischenergebnis führen, oder die letztendliche Ausgabe (d. h. Herkunft). Diese Informationen sind für ein effektives Debuggen oft von unschätzbarem Wert. Idealerweise sollte der Post-hoc-Modus einem Benutzer Folgendes ermöglichen:

  • Verschaffen Sie sich mühelos den logischen Überblick über den Job und
  • Bieten Sie eine einfache Möglichkeit, häufig auftretende Post-hoc-Debugging-Szenarien auszudrücken.

Was das Online-Datendebugging angeht, bieten nur wenige Systeme umfassende Unterstützung für Post-hoc-Debugging. Die meisten von ihnen unterstützen bestimmte Szenarien, wie z. B. das Abspielen von Vorgängen oder das Wiedergeben von Aufgaben, und können nicht einfach auf andere übertragen werden.

TextDescription automatically generated

Wir brauchen native Big Data-Debugger

Zusammenfassend lässt sich sagen, dass das Debuggen großer Datenverarbeitungssysteme eine komplexe und herausfordernde Aufgabe ist, die gängigsten Debugging-Aufgaben und die entsprechenden Anforderungen sorgfältig abzuwägen. Wie in Tabelle 1 dargestellt, gibt es sieben Hauptkategorien gängiger Debugging-Aufgaben, und nur sehr wenige Systeme können sie alle unterstützen. Die Entwicklungskosten für die Implementierung aufgabenspezifischer Varianten können erheblich sein, was die Notwendigkeit von Primitiven unterstreicht, die präzise und flexibel sind und sowohl die Überwachung als auch das Debuggen unterstützen. Damit ein Datendebugging-System effektiv ist, muss es außerdem eine ganzheitliche Unterstützung für diese Debugging-Primitiven bieten, gängige Debugging-Szenarien ohne Änderungen am Hauptdatenflussauftrag bewältigen und eine detaillierte Granularität auf verschiedenen Ebenen aufweisen, wobei der Hauptdatenflussauftrag nur einen geringen Aufwand erfordert. Durch die Erfüllung dieser Anforderungen kann das Debuggen von Big-Data-Verarbeitungssystemen einfacher, schneller und effizienter gestaltet werden, sodass Unternehmen ihre Ziele bei der Verarbeitung großer Datenmengen mit größerer Zuversicht erreichen können.

In unserem kommenden Post, wir freuen uns, Ihnen TagSniff vorstellen zu können, ein revolutionäres Daten-Debugging-Modell, das das Debuggen von Big-Data-Aufgaben vereinfacht. Wir werden uns mit den technischen Details der Funktionsweise von TagSniff befassen und erläutern, wie es auf verschiedene Szenarien zur Verarbeitung großer Datenmengen angewendet werden kann. Darüber hinaus werden wir unsere laufenden Bemühungen erörtern, das TagSniff-Modell in Apache Wayang (Incubating), ein beliebtes Framework für die Verarbeitung großer Datenmengen, zu integrieren und es einem breiteren Nutzerkreis zur Verfügung zu stellen. Bleiben Sie dran, um mehr darüber zu erfahren, wie TagSniff Ihnen helfen kann, Ihren Arbeitsablauf bei der Verarbeitung großer Datenmengen zu optimieren und die Zuverlässigkeit und Effizienz Ihrer Daten zu verbessern.

Über Scalytics

Da die Anforderungen an die moderne KI-Entwicklung steigen, haben traditionelle ETL-Plattformen Schwierigkeiten, Schritt zu halten, da sie durch ihre eigenen Einschränkungen in Bezug auf Datenbewegungen und Verarbeitungsgeschwindigkeit blockiert werden. Scalytics Connect ist die Lösung der nächsten Generation, die speziell für die Optimierung von KI-Trainings durch innovative Datenintegrationsfunktionen entwickelt wurde.

Wir ermöglichen es Ihnen, datengestützte Entscheidungen in Minuten statt Tagen zu treffen
Scalytics ist basierend auf Apache Wayang, und wir sind stolz darauf, das Projekt zu unterstützen. Du kannst dir ihr öffentliches GitHub-Repo hier ansehen. Wenn Dir unsere Software gefällt - ein Star ⭐ würde viel bedeuten!

Wenn Sie professionelle Unterstützung von unserem Team von branchenführenden Experten benötigen, können Sie sich jederzeit an uns über Slack oder E-Mail wenden.
back to all articlesFollow us on Google News
Schneller zum KI-Erfolg
Kostenlose White Paper. Erfahren Sie, wie Scalytics KI und ML optimiert und Unternehmen in die Lage versetzt, schnellere KI-Erfolge zu erzielen.

Starten Sie noch heute mit Scalytics Connect

Thank you! Our team will get in touch soon.
Oops! Something went wrong while submitting the form.