Daten aus externen Objektspeicherquellen mit Oracle Cloud Infrastructure Data Flow analysieren
Ihre Daten befinden sich in verschiedenen Clouds, wie Amazon Web Services S3 oder Azure Blob Storage. Sie möchten sie jedoch aus einer gemeinsamen Analyseplattform analysieren. Oracle Cloud Infrastructure Data Flow ist ein vollständig verwalteter Spark-Service, mit dem Sie Big Data-Analysen entwickeln und ausführen können, unabhängig davon, wo sich Ihre Daten befinden, ohne ein Big Data-Cluster bereitstellen oder verwalten zu müssen.
Architektur
Diese Architektur zeigt Oracle Cloud Infrastructure Data Flow, der eine Verbindung zu Amazon Web Service (AWS) S3 Buckets oder Azure Blob Storage Buckets herstellt, die Daten analysiert und die Ergebnisse in Oracle Cloud Infrastructure Object Storage speichert.
Um eine Verbindung zu AWS herzustellen, benötigt die Datenflussanwendung einen AWS-Zugriffsschlüssel und einen Secret Key. Um eine Verbindung zu Azure herzustellen, erfordert Data Flow den Azure-Accountnamen und -Accountschlüssel.
Das folgende Diagramm veranschaulicht diese Referenzarchitektur.
oci-dataflow-architecture-oracle.zip
Die Architektur verfügt über folgende Komponenten:
- Region
Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Rechenzentrum (Availability-Domains) enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (Länder oder sogar Kontinente).
- Datenfluss von Oracle Cloud Infrastructure
Oracle Cloud Infrastructure Data Flow ist eine cloudbasierte, serverlose Plattform, mit der Sie Spark-Jobs auf jeder Skala erstellen, bearbeiten und ausführen können, ohne dass Cluster, ein Operationsteam oder hochspezialisierte Spark-Kenntnisse erforderlich sind. Während der Laufzeit ruft Data Flow die Anwendungsquelle ab, erstellt die Verbindung, ruft die Daten ab, verarbeitet sie und schreibt die Ausgabe in Oracle Cloud Infrastructure Object Storage.
- Objektspeicher
Mit Object Storage erhalten Sie schnellen Zugriff auf große Mengen an strukturierten und unstrukturierten Daten eines beliebigen Inhaltstyps, darunter Datenbankbackups, Analysedaten und umfangreiche Inhalte, wie Bilder und Videos. Sie können Daten sicher und geschützt speichern und dann direkt aus dem Internet oder aus der Cloud-Plattform abrufen. Sie können den Speicher nahtlos skalieren, ohne dass die Performance oder Servicezuverlässigkeit beeinträchtigt wird. Verwenden Sie Standardspeicher für "Hotspeicher", auf den Sie brauchen, um schnell, sofort und häufig zuzugreifen. Verwenden Sie Archivspeicher für "Cold Storage", den Sie über lange Zeiträume beibehalten möchten und auf den Sie nur selten zugreifen.
Empfehlungen
Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt, um Daten aus externen Objektspeicherquellen mit Oracle Cloud Infrastructure Data Flow zu analysieren.
Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden.
- Datenverzeichnis
Diese Architektur ist für Benutzer gedacht, um Spark-Anwendungen mit Data Flow schnell und einfach zu testen. Nach erfolgreichen Durchführbarkeitstests empfehlen wir die Übertragung der Quelldaten an Oracle Cloud Infrastructure Object Storage, um die Performance zu verbessern und Kosten zu senken.
- Objektspeicher
Diese Architektur verwendet Standard-Oracle Cloud Infrastructure Object Storage, um verarbeitete Ausgaben zu speichern, sodass andere Cloud-Services auf die Ausgabe zugreifen können, um sie weiter zu analysieren und anzuzeigen.
Überlegungen
Wenn Sie Daten aus externen Objektspeicherquellen mit Oracle Cloud Infrastructure Data Flow analysieren, prüfen Sie diese Deployment-Optionen.
- Spark-Anwendung
Wenn eine vorhandene Spark-Anwendung für die Daten in Amazon Web Services S3 oder Azure Blob Storage ausgeführt wird, können Sie dieselbe Spark-Anwendung in Oracle Cloud Infrastructure Data Flow verwenden.
- Performance
Das Lesen von Daten über Rechenzentren hinweg ist inhärent langsam. Diese Architektur eignet sich für einen Proof-of-Concept oder für Anwendungen, die CPU-intensiv sind, wie Machine Learning Jobs. Wenn Ihr Proof-of-Concept erfolgreich ist, übertragen Sie die Quelldaten lokal in Oracle Cloud Infrastructure Object Storage, bevor Sie große Produktionsjobs ausführen.
- Sicherheit
Verwenden Sie Policys, um einzuschränken, wer auf Oracle Cloud Infrastructure-Ressourcen zugreifen kann und inwieweit.
Verwenden Sie Oracle Cloud Infrastructure Identity and Access Management (IAM), um bestimmten Benutzern und Benutzergruppen Berechtigungen für Datenfluss und Ausführungsverwaltung im Datenfluss zuzuweisen.
Verschlüsselung ist standardmäßig für Oracle Cloud Infrastructure Object Storage aktiviert und kann nicht deaktiviert werden.
- Kostenfaktor
Oracle Cloud Infrastructure Data Flow ist nutzungsbasiert. Sie zahlen also nur, wenn Sie die Data Flow-Anwendung ausführen, nicht beim Erstellen.
Die Verarbeitung eines großen Volumes von Amazon Web Services S3-Daten kann zu hohen Datenegresskosten führen.
Bereitstellen
Der Terraform-Code für diese Referenzarchitektur ist als Beispielstack in Oracle Cloud Infrastructure Resource Manager verfügbar. Dieser Terraform-Beispielstack stellt eine OCI Data Flow-Anwendungsumgebung zusammen mit IAM-Policys und OCI Object Storage-Buckets bereit (nicht Speicher von Drittanbietern). Standardmäßig wird auch eine Python Spark-Demoanwendung bereitgestellt. Sie können den Code auch von GitHub herunterladen und an Ihre spezifischen Anforderungen anpassen.
- Mit dem Beispielstack in Oracle Cloud Infrastructure Resource Manager bereitstellen:
- Klicken Sie auf
.
Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.
- Wählen Sie die Region aus, in der Sie den Stack bereitstellen möchten.
- Befolgen Sie die Anweisungen auf dem Bildschirm, um den Stack zu erstellen.
- Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
- Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.
Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie dann die Aktion Planen erneut aus.
- Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden aus.
- Klicken Sie auf
- Mit dem Terraform-Code in GitHub bereitstellen:
- Gehen Sie zu GitHub.
- Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
- Befolgen Sie die Anweisungen im Dokument
README
.
Neben dem auf GitHub bereitgestellten Terraform-Code veranschaulichen die folgenden Code-Snippets, wie Sie eine Verbindung zu Amazon Web Services S3 herstellen und wie Sie die Daten abfragen.
- Um sich bei S3 anzumelden und Daten abzufragen, müssen Sie die Packages
hadoop-aws.jar
undaws-java-sdk.jar
aufnehmen. Sie können diese Packages wie folgt in der Dateipom.xml
referenzieren:<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-aws</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.7.4</version> </dependency>
- Verwenden Sie den folgenden Code, um eine Verbindung zu Amazon Web Services S3 herzustellen. Sie müssen Ihren Zugriffsschlüssel und Ihren geheimen Schlüssel angeben. Im Snippet unten werden diese Werte durch die Variablen
ACCESS
undSECRET
dargestellt:SparkSession spark = SparkSession.builder().master("local") .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") .config("spark.hadoop.fs.s3a.access.key", ACCESS) .config("spark.hadoop.fs.s3a.secret.key", SECRET) .config("fs.s3a.connection.ssl.enabled", "false") .getOrCreate();
- Verwenden Sie den folgenden Code, um die Daten mit dem S3-Speicherort und dem angegebenen Tabellennamen abzufragen.
Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>"); ds.createOrReplaceTempView("<Table Name>"); Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");
Mehr erfahren
Weitere Informationen zu den Features dieser Architektur.
-
Weitere Informationen zum Anzeigen von Produktinformationen finden Sie unter Oracle Cloud Infrastructure Data Flow.
-
Um Data Flow auszuprobieren, verwenden Sie das Tutorial Erste Schritte mit Oracle Cloud Infrastructure Data Flow.
- Weitere Informationen zu Python und Oracle Cloud Infrastructure Data Flow finden Sie im Oracle LiveLabs-Workshop Python-Beispielanwendung mit OCI Data Flow
-
Weitere Informationen zu den SparkSession - und Dataset-Klassen, die in den Code-Snippets angezeigt werden, finden Sie in der Spark Java-API-Dokumentation.
-
Weitere Informationen zu anderen APIs, die von Apache Spark unterstützt werden, finden Sie unter Spark-API-Dokumentation.
Allgemeine Oracle Cloud Infrastructure-Architekturrichtlinien finden Sie unter Best Practice-Framework für Oracle Cloud Infrastructure.
Änderungslog
In diesem Log werden signifikante Änderungen aufgeführt:
17. August 2022 | Ein herunterladbares Diagramm und die Schaltfläche "Bereitstellen" wurden hinzugefügt, und der vorherige GitHub-Link wurde aktualisiert. |
1. Dezember 2020 | Der Abschnitt "Bereitstellen" enthält nun Verweise auf zusätzliche Ressourcen, die für die Kommunikation mit AWS erforderlich sind. |