Data Flow verwalten

Erfahren Sie, wie Data Flow verwaltet wird. Dazu gehört, wie Sie die Ausführung von Anwendungen, die Performance und den Zugriff auf Object Storage optimieren, sowie Best Practices für die Spark-Performance und allgemeine Fehlerbehebung.

Datenflussausführungen optimieren

Optimierung - Überblick

Vor der Optimierung einer in Data Flow ausgeführten Spark-Anwendung müssen Sie verstehen, wie Spark-Anwendungen von Data Flow ausgeführt werden. Wenn Sie eine Spark-Anwendung ausführen, wird ein VM-Cluster basierend auf den ausgewählten VM-Ausprägungen und deren Anzahl bereitgestellt. Spark wird innerhalb dieses Clusters ausgeführt. Diese VMs sind für Ihre Spark-Anwendung privat, werden jedoch in einer gemeinsam verwendeten, mehrmandantenfähigen Hardware- und Softwareumgebung ausgeführt.

Wenn Sie eine Anwendung starten, wählen Sie eine VM-Ausprägungstyp für den Treiber und eine weitere Ausprägung für die Worker aus. Sie können auch angeben, wie viele Worker Sie benötigen. Es gibt immer nur einen Fahrer. Die Größe des Treibers und der Worker wird automatisch für alle CPU- und Speicherressourcen in den VMs angepasst. Wenn für Ihre Workload größere oder kleinere Java Virtual Machines benötigt werden, können Sie dies steuern, indem Sie einen größeren oder kleineren VM-Instanztyp auswählen.

Data Flow ist so konzipiert, dass die Verwendung von Oracle Object Storage einfach und transparent ist. Daher ist Object Storage immer eines der ersten Elemente, das Sie bei der Prüfung einer Anwendung mit schlechter Performance untersuchen sollten.

Performanceoptimierung

Das Hinzufügen weiterer Ressourcen ist bei Problemen manchmal der beste Lösungsansatz, insbesondere wenn die Anwendung bereits stark optimiert ist. Dies wird durch die Verfolgung der Laufzeithistorie aller Spark-Anwendungen und die Zentralisierung an einem Ort vereinfacht. Laden Sie in der Data Flow-UI die Anwendung, die Sie optimieren möchten. Auf der Seite "Anwendungsdetails" werden historische Ausführungen und die Ressourcen angezeigt, die bei diesen Ausführungen verwendet wurden. Häufig ist die Einhaltung Ihres SLAs so einfach wie die Verwendung zusätzlicher CPU- und Speicherressourcen. In dieser Abbildung ist ein Entwickler dargestellt. Ein Pfeil verläuft zu einem Feld mit der Bezeichnung "Data Flow Home Page" (Data Flow-Homepage). Ein Pfeil mit dem Label "Runs Tab" (Registerkarte "Ausführungen") verläuft zu einem Feld mit dem Label "Locate Application to be Optimized" (Zu optimierende Anwendung suchen). Ein Pfeil mit dem Label "Open Application" (Anwendung öffnen) verläuft zu einem Feld mit dem Label "View Runtime History Graph" (Laufzeithistoriendiagramm anzeigen). Ein Pfeil mit dem Label "Select App from Catalog" (Anwendung aus Katalog auswählen) verläuft zu einem Feld mit dem Label "Tune Default Resources" (Standardressourcen optimieren). Abschließend verläuft ein Pfeil von diesem Feld zum Ende.

Zugriff auf Object Storage optimieren

Object Storage wird in allen Oracle Cloud Infrastructure-Data Centern bereitgestellt. Der Zugriff auf Object Storage ist sehr leistungsstark, vorausgesetzt, die Spark-Anwendung wird in derselben Oracle Cloud Infrastructure-Region ausgeführt, in der die Daten gespeichert sind. Wenn Datenlese- oder -schreibungen langsam sind, stellen Sie sicher, dass Sie die Datenflussanwendung in derselben Region wie Ihre Daten öffnen. Die aktive Region wird in der Oracle Cloud Infrastructure-UI angezeigt. Die REST-API muss auch auf eine bestimmte Region ausgerichtet sein.

Best Practices für Spark-Performance

Wenn Sie vermuten, dass Ihre Spark-Anwendung nicht ordnungsgemäß optimiert ist, ziehen Sie die folgenden Optimierungen vor:
  1. Verwenden Sie Object Storage. Object Storage bietet wesentlich mehr Bandbreite als das Lesen von Daten aus einem RDBMS. Das Kopieren von Daten in den Objektspeicher im Voraus beschleunigt die Verarbeitung erheblich.
  2. Verwenden Sie wann immer möglich Parquet-Dateien. Parquet-Dateien sind bis zu zehn Mal kleiner, und Ihre Jobs lesen nur die erforderlichen Daten und nicht die gesamten Dateien.
  3. Partitionieren Sie Ihre Datasets entsprechend. Die meisten Analytics-Anwendungen greifen nur auf Daten der letzten Woche zu. Stellen Sie sicher, dass Sie die Daten partitionieren, sodass die neuesten und ältere Daten in separaten Dateien gespeichert werden.
  4. Identifizieren Sie Datenabweichungsprobleme, indem Sie in der Spark-UI nach Executors mit langer Ausführungszeit suchen.
  5. Vermeiden Sie Treiberengpässe. Beim Erfassen von Daten in Spark werden alle Daten an den Spark-Treiber zurückgesendet. Führen Sie Erfassungsvorgänge so spät wie möglich in Ihren Jobs aus. Wenn Sie ein großes Dataset erfassen müssen, skalieren Sie den Treiberknoten vertikal auf eine größere VM-Ausprägung. Dadurch wird sichergestellt, dass Sie über ausreichende Speicher- und CPU-Ressourcen verfügen.
Data Flow-Servicelimits
Die Standardlimits hängen vom jeweiligen Accounttyp ab. Wenn Sie sich für eine kostenlose Cloud-Testversion registriert haben, ist Sie zum Testen auf zwei Instanzen beschränkt. So zeigen Sie Ihre Limits an:
  • Wählen Sie in der Oracle Cloud Infrastructure-Konsole die Option Governance aus.
  • Wählen Sie Limits, Quota und Nutzung aus.
  • Um eine höhere Quota anzufordern, wählen Sie Erhöhung eines Servicelimits beantragen aus.
Backupstrategien für Data Flow
Verwalten Sie Ihren Anwendungscode mit einer der folgenden Methoden:
  • (empfohlen) Laden Sie Ihren Spark-Code am Ende einer CI/CD-Pipeline in Oracle Cloud Infrastructure hoch. Bei Verwendung dieser Methode müssen Sie kein Backup Ihrer Spark-Anwendungen erstellen, weil Backups an einer anderen Stelle verarbeitet werden.
  • Wenn Sie Code manuell verwalten, kopieren Sie ihn in viele Regionen.
Disaster Recovery mit Data Flow

Dabei wird in erster Linie ein regionales Failover in Betracht gezogen. Um sich auf diese Situation vorzubereiten, erstellen Sie Datenflussanwendungen in vielen Regionen, und synchronisieren Sie die Daten zwischen den Regionen. Bei einem regionalen Failover werden dann die Datenfluss-APIs in einer anderen Region mit der korrekten Konfiguration aufgerufen. Die Anwendungs-OCIDs sind in jeder Region unterschiedlich.

Allgemeine Probleme mit Jobs

Data Flow-Jobs verlaufen aus vielen Gründen nicht erfolgreich, in der Regel jedoch aufgrund folgender Ursachen:

  • Anwendungsfehler.
  • Fehler wegen zu geringem Speicherplatz.
  • Transiente Laufzeitprobleme.
In Data Flow sind drei Tools für die Diagnose und Korrektur nicht erfolgreicher Jobs verfügbar:

Beide sind vom Browser aus sicher zugänglich, indem die jeweilige Ausführung geladen wird.

In dieser Abbildung ist ein Entwickler dargestellt. Ein Pfeil verläuft zu einem Feld mit der Bezeichnung "Data Flow Home Page" (Data Flow-Homepage). Ein Pfeil mit dem Label "Runs Tab" (Registerkarte "Ausführungen") verläuft zu einem Feld mit der Bezeichnung "Locate Failing Run" (Nicht erfolgreiche Ausführung finden). Ein Pfeil mit dem Label "Open Run" (Ausführung öffnen) verläuft zu einem Feld mit der Bezeichnung "Choose Debugging Approach" (Debuggingansatz auswählen). Ein Pfeil mit dem Label "Spark UI Link" (Link zur Spark-UI) verläuft zu einem Feld mit der Bezeichnung "Spark UI" (Spark-UI), während ein zweiter Pfeil mit dem Label "View Logs Link" (Link "Logs anzeigen") von "Choose Debugging Approach" (Debuggingansatz auswählen) zu einem Feld mit der Bezeichnung "Driver and Executor Logs" (Treiber- und Executor-Logs) führt.

Wenn ein Job nicht erfolgreich verläuft, prüfen Sie zuerst die Logdatei des Treibers stderr, da die meisten Fehler hier angezeigt werden. Prüfen Sie als Nächstes die Logdatei stderr für Executors. Wenn die Logdateien keine bestimmten Fehler enthalten, laden Sie die Spark-UI, um eine weitere Untersuchung der Spark-Anwendung vorzunehmen.

Je nach Problemtyp:
  1. Anwendungsfehler müssen an der Quelle korrigiert werden. Anschließend kann eine neue Anwendung erstellt werden.
  2. Beheben Sie speicherbedingte Fehler durch das Ausführen größerer Instanzen, durch das Verarbeiten von weniger Daten durch feingranulierte Partitionierung oder durch Optimieren der Anwendung, um die Effizienz zu erhöhen.
  3. Data Flow versucht, Sie vor transienten Laufzeitproblemen zu schützen. Wenn das Problem bestehen bleibt, wenden Sie sich an Oracle Support.
  4. Eine ungültige Anforderung gibt einen Fehler in der Anforderung zurück, der in den Logdateien angezeigt wird.
  5. Wenn der Benutzer nicht autorisiert ist (aber die Anforderung gültig ist), wird eine Not Authorized-Fehler zurückgegeben.