Hinweis:

Verwenden Sie OCI Data Flow mit Apache Spark Streaming, um ein Kafka-Thema in einer skalierbaren und nahezu Echtzeitanwendung zu verarbeiten

Einführung

Oracle Cloud Infrastructure (OCI) Data Flow ist ein verwalteter Service für das Open-Source-Projekt mit dem Namen Apache Spark. Mit Spark können Sie es im Wesentlichen für umfangreiche Verarbeitungsdateien, Streaming- und Datenbankvorgänge verwenden. Sie können Anwendungen mit sehr hoch skalierbarer Verarbeitung erstellen. Spark kann geclusterte Rechner skalieren und verwenden, um Jobs mit minimaler Konfiguration zu paralellisieren.

Mit Spark als verwalteter Service (Data Flow) können Sie viele skalierbare Services hinzufügen, um die Leistungsfähigkeit der Cloud-Verarbeitung zu erhöhen. Data Flow kann Spark Streaming verarbeiten.

Streaming-Anwendungen erfordern eine kontinuierliche Ausführung für einen langen Zeitraum, der häufig über 24 Stunden hinausgeht und so lange wie Wochen oder sogar Monate dauern kann. Bei unerwarteten Fehlern müssen Streaminganwendungen vom Point of Failure neu gestartet werden, ohne falsche Berechnungsergebnisse zu erzeugen. Data Flow erfasst mit strukturiertem Spark-Streaming-Checkpointing den verarbeiteten Offset, der in Ihrem Object Storage-Bucket gespeichert werden kann.

Hinweis: Wenn Sie Daten als Batchstrategie verarbeiten müssen, können Sie den folgenden Artikel lesen: Große Dateien in Autonomous Database und Kafka mit Oracle Cloud Infrastructure Data Flow verarbeiten

Dataaflow-use-case.png

In diesem Tutorial werden die häufigsten Aktivitäten zum Verarbeiten von Daten-Volume-Streaming angezeigt, Sie können Datenbanken abfragen und die Daten zusammenführen/verknüpfen, um eine andere Tabelle im Speicher zu bilden, oder Daten nahe an ein beliebiges Ziel senden. Sie können diese massiven Daten in Ihre Datenbank und in eine Kafka-Warteschlange mit sehr kostengünstiger und sehr effektiver Performance schreiben.

Ziele

Voraussetzungen

Aufgabe 1: Object Storage-Struktur erstellen

Object Storage wird als Standarddatei-Repository verwendet. Sie können andere Typen von Datei-Repositorys verwenden. Object Storage ist jedoch eine einfache und kostengünstige Möglichkeit, Dateien mit Performance zu bearbeiten. In diesem Tutorial laden beide Anwendungen eine große CSV-Datei aus dem Objektspeicher und zeigen, wie Apache Spark schnell und intelligent ein hohes Datenvolumen verarbeiten kann.

  1. Compartment erstellen: Compartments sind wichtig, um Ihre Cloud-Ressourcen zu organisieren und zu isolieren. Sie können Ihre Ressourcen nach IAM-Policys isolieren.

    • Mit diesem Link können Sie die Policys für Compartments verstehen und einrichten: Compartments verwalten

    • Erstellen Sie ein Compartment, in dem alle Ressourcen der 2 Anwendungen in diesem Tutorial gehostet werden. Erstellen Sie ein Compartment mit dem Namen Analytics.

    • Gehen Sie zum Hauptmenü von Oracle Cloud, und suchen Sie nach: Identität und Sicherheit, Compartments. Klicken Sie im Abschnitt "Compartments" auf Compartment erstellen, und geben Sie den Namen ein. erstellen-compartment.png

      Hinweis: Sie müssen einer Benutzergruppe den Zugriff erteilen und Ihren Benutzer einschließen.

    • Klicken Sie auf Compartment erstellen, um das Compartment einzuschließen.

  2. Erstellen Sie den Bucket in Object Storage: Buckets sind logische Container zum Speichern von Objekten. Daher werden alle für diese Demo verwendeten Dateien in diesem Bucket gespeichert.

    • Gehen Sie zum Hauptmenü von Oracle Cloud, und suchen Sie nach Speicher und Buckets. Wählen Sie im Abschnitt "Buckets" das zuvor erstellte Compartment (Analyse) aus.

      auswählen-compartment.png

    • Klicken Sie auf Bucket erstellen. Erstellen Sie 4 Buckets: Apps, Daten, Datenflusslogs, Wallet

      erstellen-bucket.png

    • Geben Sie die Informationen zum Bucket-Namen mit diesen 4 Buckets ein, und verwalten Sie die anderen Parameter mit der Standardauswahl.

    • Klicken Sie für jeden Bucket auf Erstellen. Die erstellten Buckets werden angezeigt.

      Buckets - dataflow.png

Hinweis: Prüfen Sie die IAM-Policys für den Bucket. Sie müssen die Policys einrichten, wenn Sie diese Buckets in Ihren Demoanwendungen verwenden möchten. Die Konzepte und das Setup finden Sie hier: Überblick über Object Storage und IAM-Policys.

Aufgabe 2: Autonomous Database erstellen

Oracle Cloud Autonomous Database ist ein verwalteter Service für Oracle Database. In diesem Tutorial stellen die Anwendungen aus Sicherheitsgründen eine Verbindung zur Datenbank her.

Hinweis: Prüfen Sie IAM-Policys für den Zugriff auf Autonomous Database hier: IAM-Policy für Autonomous Database

Aufgabe 3: CSV-Beispieldateien hochladen

Um die Leistungsfähigkeit von Apache Spark zu demonstrieren, lesen die Anwendungen eine CSV-Datei mit 1.000.000 Zeilen. Diese Daten werden mit nur einer Befehlszeile in die Autonomous Data Warehouse-Datenbank eingefügt und auf einem Kafka-Streaming (Oracle Cloud Streaming) veröffentlicht. All diese Ressourcen sind skalierbar und perfekt für ein hohes Datenvolumen geeignet.

Die neue Tabelle GDPPERCAPTA wurde erfolgreich importiert.

adw-table-imported.png

Aufgabe 4: Secret Vault für Ihr ADW-ADMIN-Kennwort erstellen

Aus Sicherheitsgründen wird das ADW ADMIN-Kennwort in einem Vault gespeichert. Oracle Cloud Vault kann dieses Kennwort mit Sicherheit hosten und mit OCI-Authentifizierung auf Ihre Anwendung zugreifen.

Hinweis: Prüfen Sie die IAM-Policy für OCI Vault hier: OCI Vault-IAM-Policy.

Aufgabe 5: Kafka-Streaming erstellen (Oracle Cloud Streaming)

Oracle Cloud Streaming ist ein Kafka-ähnlicher verwalteter Streaming-Service. Sie können Anwendungen mit den Kafka-APIs und den gängigen SDKs entwickeln. In diesem Tutorial erstellen Sie eine Instanz von Streaming und konfigurieren diese für die Ausführung in beiden Anwendungen für die Veröffentlichung und Nutzung großer Datenmengen.

  1. Gehen Sie im Hauptmenü von Oracle Cloud zu Analysen und KI, Streams.

  2. Ändern Sie das Compartment in Analytics. Jede Ressource in dieser Demo wird in diesem Compartment erstellt. Dies ist sicherer und einfacher, IAM zu kontrollieren.

  3. Klicken Sie auf Stream erstellen.

    erstellen-stream.png

  4. Geben Sie den Namen als kafka_like ein (Beispiel): Sie können alle anderen Parameter mit den Standardwerten verwalten.

    save-create-stream.png

  5. Klicken Sie auf Erstellen, um die Instanz zu initialisieren.

  6. Warten Sie auf den Status Active. Jetzt können Sie die Instanz verwenden.

    Hinweis: Beim Erstellen des Streams können Sie die Option Standard-Streampool automatisch erstellen auswählen, um den Standardpool automatisch zu erstellen.

  7. Klicken Sie auf den Link DefaultPool.

    default-pool-option.png

  8. Zeigen Sie die Verbindungseinstellung an.

    stream-conn-settings.png

    Kafka-conn.png

  9. Notieren Sie diese Informationen, wie Sie sie im nächsten Schritt benötigen.

Hinweis: Prüfen Sie die IAM-Policys für das OCI-Streaming hier: IAM-Policy für OCI Streaming.

Aufgabe 6: AUTH TOKEN für den Zugriff auf Kafka generieren

Sie können auf OCI Streaming (Kafka-API) und andere Ressourcen in Oracle Cloud mit einem Authentifizierungstoken zugreifen, das Ihrem Benutzer in OCI IAM zugeordnet ist. In den Kafka-Verbindungseinstellungen enthalten die SASL-Verbindungszeichenfolgen einen Parameter namens password und einen AUTH_TOKEN-Wert, wie in der vorherigen Aufgabe beschrieben. Um den Zugriff auf OCI Streaming zu aktivieren, müssen Sie zu Ihrem Benutzer in der OCI-Konsole gehen und einen AUTH TOKEN erstellen.

  1. Gehen Sie im Oracle Cloud-Hauptmenü zu Identität und Sicherheit, Benutzer.

    Hinweis: Beachten Sie, dass der Benutzer, den Sie zum Erstellen von AUTH TOKEN benötigen, der mit Ihrer OCI CLI-Konfiguration und allen IAM-Policys-Konfiguration für die bisher erstellten Ressourcen konfiguriert ist. Die Ressourcen sind:

    • Oracle Cloud Autonomous Data Warehouse
    • Oracle Cloud-Streaming
    • Oracle Object Storage
    • Oracle-Datenfluss
  2. Klicken Sie auf Ihren Benutzernamen, um die Details anzuzeigen.

    auth_token_create.png

  3. Klicken Sie auf der linken Seite der Konsole auf die Option Authentifizierungstoken, und klicken Sie auf Token generieren.

    Hinweis: Das Token wird nur in diesem Schritt generiert und wird nach Abschluss des Schritts nicht mehr angezeigt. Kopieren Sie den Wert, und speichern Sie ihn. Wenn Sie den Tokenwert verlieren, müssen Sie das Authentifizierungstoken erneut generieren.

auth_token_1.png auth_token_2.png

Aufgabe 7: Demoanwendung einrichten

Dieses Tutorial enthält eine Demoanwendung, für die wir die erforderlichen Informationen einrichten.

  1. Laden Sie die Anwendung mit dem folgenden Link herunter:

  2. Suchen Sie die folgenden Details in Ihrer Oracle Cloud-Konsole:

    • Mandanten-Namespace

      Mandant - namespace-1.png

      Mandant-Namespace-detail.png

    • Kennwort-Secret

      Vault-adw.png

      Vault-Adw-detail.png

      Secret-adw.png

    • Streaming-Verbindungseinstellungen

      Kafka-conn.png

    • Authentifizierungstoken

      auth_token_create.png

      auth_token_2.png

  3. Öffnen Sie die heruntergeladene ZIP-Datei (Java-CSV-DB.zip und JavaConsumeKafka.zip). Gehen Sie zum Ordner /src/main/java/example, und suchen Sie den Code Example.java.

    Code-variables.png

    Dabei handelt es sich um die Variablen, die mit den Werten der Mandantenressourcen geändert werden müssen.

    VARIABLENNAME RESSOURCENNAME INFORMATIONSTITEL
    bootstrapServers Streaming-Verbindungseinstellungen Bootstrap-Server
    streamPoolId Streaming-Verbindungseinstellungen Wert ocid1.streampool.oc1.iad..... in SASL-Verbindungszeichenfolge
    kafkaUsername Streaming-Verbindungseinstellungen Wert von usename in " " in SASL-Verbindungszeichenfolge
    kafkaPassword Authentifizierungstoken Der Wert wird nur im Erstellungsschritt angezeigt
    OBJECT_STORAGE_NAMESPACE MANDANTEN-NAMESPACE MANDANT
    NAMENSRAUM MANDANTEN-NAMESPACE MANDANT
    PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID

Hinweis: Alle für diese Demo erstellten Ressourcen befinden sich in der Region "US-ASHBURN-1". Prüfen Sie, in welcher Region Sie arbeiten möchten. Wenn Sie die Region ändern, müssen Sie 2 Punkte in 2 Codedateien ändern:

Aufgabe 8: Java-Code verstehen

Dieses Tutorial wurde in Java erstellt, und dieser Code kann auch in Python portiert werden. Um die Effizienz und Skalierbarkeit zu beweisen, wurde die Anwendung entwickelt, um einige Möglichkeiten in einem gemeinsamen Anwendungsfall eines Integrationsprozesses zu zeigen. Der Code für die Anwendung zeigt also die folgenden Beispiele an:

Diese Demo kann auf Ihrem lokalen Rechner ausgeführt und in der Data Flow-Instanz bereitgestellt werden, um sie als Jobausführung auszuführen.

Hinweis: Verwenden Sie für Data Flow-Jobs und Ihren lokalen Rechner die OCI-CLI-Konfiguration, um auf die OCI-Ressourcen zuzugreifen. Auf der Data Flow-Seite ist alles vorkonfiguriert, sodass die Parameter nicht geändert werden müssen. Auf der Seite Ihres lokalen Rechners müssen Sie die OCI-CLI installiert und den Mandanten-, Benutzer- und Private Key für den Zugriff auf Ihre OCI-Ressourcen konfiguriert haben.

Zeigen Sie den Example.java-Code in Abschnitten an:

Aufgabe 9: Anwendung mit Maven verpacken

Bevor Sie den Job in Spark ausführen, müssen Sie Ihre Anwendung mit Maven verpacken.

  1. Gehen Sie zum Ordner /DataflowSparkStreamDemo, und führen Sie den folgenden Befehl aus:

    mvn package

  2. Maven wird beim Starten des Packages angezeigt.

    Maven-package-1a.png

  3. Wenn alles korrekt ist, wird die Meldung Erfolgreich angezeigt.

    Maven-success-1a.png

Aufgabe 10: Ausführung prüfen

  1. Testen Sie Ihre Anwendung auf dem lokalen Spark-Rechner, indem Sie den folgenden Befehl ausführen:

    spark-submit --class example.Example target/consumekafka-1.0-SNAPSHOT.jar

  2. Gehen Sie zu Ihrer Oracle Cloud Streaming-Kafka-Instanz, und klicken Sie auf Testnachricht erstellen, um einige Daten zu generieren, um Ihre Echtzeitanwendung zu testen.

    test-kafka-1.png

  3. Sie können diese JSON-Nachricht in das Kafka-Thema einfügen.

    {"Organization Id": "1235", "Name": "Teste", "Country": "Luxembourg"}

    test-kafka-2.png

  4. Jedes Mal, wenn Sie auf Erzeugen klicken, senden Sie eine Nachricht an die Anwendung. Das Ausgabelog der Anwendung sieht in etwa wie folgt aus:

    • Dies sind die Daten, die aus dem Kafka-Thema gelesen wurden.

      test-output-1.png

    • Dies sind die zusammengeführten Daten aus der ADW-Tabelle.

      test-output-2.png

Aufgabe 11: Datenflussjob erstellen und ausführen

Wenn beide Anwendungen erfolgreich auf dem lokalen Spark-Rechner ausgeführt werden, können Sie sie jetzt im Oracle Cloud Data Flow in Ihrem Mandanten bereitstellen.

Hinweis: In der Spark Streaming-Dokumentation können Sie den Zugriff auf Ressourcen wie Oracle Object Storage und Oracle Streaming (Kafka) konfigurieren: Zugriff auf Data Flow aktivieren

  1. Laden Sie die Packages in Object Storage hoch.

    • Bevor Sie eine Datenflussanwendung erstellen, müssen Sie die Java-Artefaktanwendung (Ihre Datei ***-SNAPSHOT.jar) in den Object Storage-Bucket mit dem Namen Anwendungen hochladen.
  2. Erstellen Sie eine Datenflussanwendung.

    • Wählen Sie das Hauptmenü von Oracle Cloud aus, und gehen Sie zu Analysen und KI und Datenfluss. Wählen Sie das Compartment Analytics aus, bevor Sie eine Datenflussanwendung erstellen.

    • Klicken Sie auf Anwendung erstellen.

      create-dataflow-app.png

    • Füllen Sie die Parameter wie folgt aus.

      Datenfluss-app.png

    • Klicken Sie auf Erstellen.

    • Klicken Sie nach der Erstellung auf den Link Demo skalieren, um Details anzuzeigen. Um einen Job auszuführen, klicken Sie auf RUN.

      Hinweis: Klicken Sie auf Erweiterte Optionen anzeigen, um die OCI-Sicherheit für den Ausführungstyp Spark-Stream zu aktivieren.

      erweitert-options.png

  3. Aktivieren Sie die folgenden Optionen.

    Hauptelement-execution.png

  4. Klicken Sie auf Run, um den Job auszuführen.

  5. Bestätigen Sie die Parameter, und klicken Sie erneut auf Ausführen.

    Datenflussausführung-job.png

    • Sie können den Status des Jobs anzeigen.

      Datenflussausführung-status.png

    • Warten Sie, bis der Status auf Erfolgreich gesetzt ist, und die Ergebnisse werden angezeigt.

      Datenflussausführung-success.png

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.