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:
    1. Klicken Sie auf Bereitstellung in Oracle Cloud.

      Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.

    2. Wählen Sie die Region aus, in der Sie den Stack bereitstellen möchten.
    3. Befolgen Sie die Anweisungen auf dem Bildschirm, um den Stack zu erstellen.
    4. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    5. 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.

    6. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden aus.
  • Mit dem Terraform-Code in GitHub bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
    3. 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 und aws-java-sdk.jar aufnehmen. Sie können diese Packages wie folgt in der Datei pom.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 und SECRET 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.

Datenfluss von Oracle Cloud Infrastructure:
Apache Spark:
  • 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: