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.
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
- 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.
- 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.
- 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.
- Identifizieren Sie Datenabweichungsprobleme, indem Sie in der Spark-UI nach Executors mit langer Ausführungszeit suchen.
- 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.
- 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.
- (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.
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.
- Logs aus Oracle Cloud Infrastructure Logging sind verfügbar, wenn Sie die Schritte zur Aktivierung von Oracle Cloud Infrastructure Logging-Logs in Data Flow ausführen.
- Die Spark-UI.
- Das Spark-Log ,
stdout- undstderr-Stream für den Spark-Treiber und alle Executors.
Beide sind vom Browser aus sicher zugänglich, indem die jeweilige Ausführung geladen wird.
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.
- Anwendungsfehler müssen an der Quelle korrigiert werden. Anschließend kann eine neue Anwendung erstellt werden.
- 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.
- Data Flow versucht, Sie vor transienten Laufzeitproblemen zu schützen. Wenn das Problem bestehen bleibt, wenden Sie sich an Oracle Support.
- Eine ungültige Anforderung gibt einen Fehler in der Anforderung zurück, der in den Logdateien angezeigt wird.
- Wenn der Benutzer nicht autorisiert ist (aber die Anforderung gültig ist), wird eine
Not Authorized-Fehler zurückgegeben.