Einrichtung der Batch-Verarbeitungsumgebung im „ Hadoop “-Ökosystem

Um die Stapelverarbeitung im Ökosystem „ Hadoop “ zu konfigurieren, müssen Sie die Bereitstellungsumgebung vorbereiten.

Voraussetzungen

Sie benötigen die folgenden Artefakte, um die Stapelverarbeitung im Ökosystem „ Hadoop “ zu konfigurieren:

  • Eine Datenbank der Version „ Apache Hive “ ( 2.3.7 ) oder höher
  • Apache Hadoop 2.10.0 mit Apache Spark 2.4.7
  • Eine Docker-Engine zum Erstellen und Verpacken der Spark Manager-Anwendung
  • Ein spezielles Notebook, das Sie gemeinsam für Modellbewertungen nutzen
  • Eine Rückmeldungs-Tabelle, eine Trainingsdaten-Tabelle und eine Nutzdaten-Protokollierungstabelle, die Sie in der Datenbank „ Hive “ anlegen
  • Livy und WebHDFS sind im „ Hadoop “-Ökosystem verfügbar; hierfür ist Apache Hadoop 2.10.0 erforderlich
  • Eine Gruppe von Benutzern, die über die Basisauthentifizierung auf diese Anwendung zugreifen können
  • Ein Archiv „ Python “, das Module enthält, die für die Modellbewertung erforderlich sind
  • Eine drifted_transaction Tabelle, in der die Transaktionen gespeichert werden, die für die Nachbearbeitungsanalyse verwendet werden
  • Optional ein Kerberos-basiertes „ Hadoop “-Ökosystem für die Ausführung der Anwendung

Schritt 1: Stellen Sie sicher, dass Livy und WebHDFS im Hadoop -Ökosystem verfügbar sind

Da die Spark Manager-Anwendung Livy zum Senden von Aufträgen und WebHDFS zum Zugriff auf Dateien verwendet, müssen Sie Livy und WebHDFS installieren, um auf das Hadoop -Ökosystem zugreifen zu können. Wenn „ Livy ” und „ WebHDFS ” nicht installiert sind, müssen Sie diese anfordern. Ihr „ Hadoop “-Cluster-Administrator kann Ihnen die Basis-URLs für Livy, WebHDFS, und den Dateibereich HDFS mitteilen. Sie benötigen diese URLs, um die Bereitstellungsumgebung vorzubereiten. Die folgenden Beispiele zeigen Basis-URLs für Livy, WebHDFS, und die Dateibasis HDFS :

  • WebHDFS URL: http://$hostname:50070

  • HDFS Datei „base URL “: hdfs://$hostname:9000

  • Livy URL: http://$hostname:8998

Sie können auch die folgenden Elemente beim Cluster-Administrator von „ Hadoop “ anfordern:

  • Ein Basispfad im Dateisystem „ HDFS “, in den Sie Dateien schreiben können
  • Ein Pfad zur Datei „ yarn.keytab “, die als Parameter conf.spark.yarn.keytab in der Nutzlast der Jobanforderung angegeben ist

Schritt 2: Nutzung eines Kerberos-basierten „ Hadoop “-Ökosystems

Wenn Sie Ihre Anwendung in einem Kerberos-basierten Hadoop -Ökosystem ausführen, muss die Anwendung ein Kerberos -Ticket generieren, bevor sie Anfragen an Livy oder WebHDFS senden kann. Um ein Ticket für „ Kerberos “ zu erstellen, benötigen Sie die folgenden Dateien und IDs:

  • Eine Keytab-Datei

  • Eine Datei „ krb5.conf “

  • Ein Kerberos-Benutzerprinzipal

Zur Authentifizierung beim Key Distribution Center (KDC) benötigen Rechner mit aktiviertem Kerberos -Dienst eine Keytab-Datei. Die Keytab-Datei ist eine verschlüsselte, lokale Kopie des Hostschlüssels, die auf der Festplatte gespeichert ist. Ihr „ Hadoop “-Cluster-Administrator muss diese Keytab-Datei bereitstellen. Sie müssen die hdfs.keytab Datei anfordern, um Ihre Bereitstellungsumgebung vorzubereiten.

Die krb5. conf Datei enthält Konfigurationsinformationen für „ Kerberos “, wie beispielsweise die Speicherorte von KDCs und Admin-Servern für „ Kerberos “-Realms. Die Datei enthält auch Standardeinstellungen für den aktuellen Bereich und für Kerberos -Anwendungen sowie Zuordnungen von Hostnamen zu Kerberos -Bereichen. Ihr Cluster-Administrator für „ Hadoop “ muss diese Konfigurationsdatei bereitstellen. Sie müssen die krb5.conf Datei anfordern, um Ihre Bereitstellungsumgebung vorzubereiten.

Ein „ Kerberos “-Prinzipal repräsentiert eine eindeutige Identität, beispielsweise openscale_user1/$hostname@HADOOPCLUSTER.LOCAL in einem „ Kerberos “-System, das „ Kerberos “ Tickets zuweisen kann, um auf „ Kerberos “-fähige Dienste zuzugreifen. Prinzipalnamen bestehen aus mehreren Komponenten, die durch einen Schrägstrich ( / ) voneinander getrennt sind. Sie können auch einen Bereich als letzte Komponente des Namens angeben, indem Sie das Symbol @ verwenden. Ihr Cluster-Administrator für „ Hadoop “ muss die Prinzipal-ID bereitstellen. Sie müssen die Haupt-ID anfordern, um Ihre Bereitstellungsumgebung vorzubereiten. Wenn mehrere Benutzer Aufträge über tsubmit einreichen sollen, müssen Sie weitere Principal-IDs anfordern.

Schritt 3: Erstellen Sie eine Zulassungsliste mit Benutzern, die über die Basisauthentifizierung auf diese Anwendung zugreifen dürfen

Sie müssen eine Zulassungsliste mit Benutzernamen und Passwörtern erstellen, die über die Basisauthentifizierung auf die Spark Manager-Anwendung zugreifen können. Diese Whitelist mit Benutzernamen und Passwörtern muss in einer auth.json Datei angegeben werden.

Schritt 4: Erstellen Sie ein Archiv „ Python “ mit den Modulen, die für die Modellbewertung erforderlich sind

Modellbewertungen, die im Ökosystem „ Hadoop “ ausgeführt werden, erfordern abhängige Python-Pakete. Ohne diese Pakete schlagen die Auswertungen fehl. Mit den folgenden Schritten können Sie diese Abhängigkeiten installieren und an einen Speicherort im verteilten Dateisystem „ Hadoop “ ( HDFS ) hochladen.

  1. Melden Sie sich bei einem Betriebssystem „ Linux “ an, auf dem „ Python “ installiert ist, und überprüfen Sie die Version von „ Python “, indem Sie den folgenden Befehl ausführen:

    python --version
    Python 3.7.9
    
  2. Installieren Sie das python3-devel Paket, das die GNU Compiler Collection (GCC)-Bibliotheken installiert, indem Sie den folgenden Befehl ausführen:

    yum install python3-devel
    
  3. Wechseln Sie in das Verzeichnis, in dem die virtuelle Umgebung „ Python “ erstellt wurde, beispielsweise in den /opt Ordner:

    cd /opt

  4. Löschen Sie alle zuvor erstellten virtuellen Umgebungen, indem Sie den folgenden Befehl ausführen.

    rm -fr wos_env
    rm -fr wos_env.zip
    

    Der wos_env Ordner enthält eine virtuelle Umgebung namens „ Python “ mit Spark-Job-Abhängigkeiten.

  5. Erstellen und aktivieren Sie die virtuelle Umgebung, indem Sie die folgenden Befehle ausführen.

    python -m venv wos_env
    source wos_env/bin/activate
    

    Die wos_env virtuelle Umgebung wird erstellt und der source Befehl aktiviert die virtuelle Umgebung.

  6. Aktualisieren Sie die pip-Umgebung, indem Sie den folgenden Befehl ausführen:

    pip install --upgrade pip
    
  7. Um alle Abhängigkeiten zu installieren, wählen Sie aus, ob Sie diese einzeln oder mit einem Batch-Prozess in einer Datei installieren möchten. Sie müssen in der folgenden Reihenfolge installiert werden.

    • Wenn Sie Python 3.7 verwenden, führen Sie die folgenden Befehle aus, um die erforderlichen Dateien einzeln zu installieren:

      python -m pip install numpy==1.20.2
      python -m pip install scipy==1.6.3
      python -m pip install pandas==1.2.4
      python -m pip install scikit-learn==0.24.2
      python -m pip install osqp==0.6.1
      python -m pip install cvxpy==1.0.25
      python -m pip install marshmallow==3.11.1
      python -m pip install requests==2.25.1
      python -m pip install jenkspy==0.2.0
      python -m pip install pyparsing==2.4.7
      python -m pip install tqdm==4.60.0
      python -m pip install more_itertools==8.7.0
      python -m pip install tabulate==0.8.9
      python -m pip install py4j==0.10.9.2
      python -m pip install pyarrow==4.0.0
      python -m pip install "ibm-wos-utils==4.6.*"
      

    Sie können alle Module in eine requirements.txt Datei einfügen und die Befehle gleichzeitig ausführen.

    • Wenn Sie Python 3.7 verwenden, erstellen Sie die requirements.txt Datei, indem Sie die folgenden Zeilen zur Datei hinzufügen. Führen Sie dann den python -m pip install -r requirements.txt Befehl aus:

      numpy==1.20.2
      scipy==1.6.3
      pandas==1.2.4
      osqp==0.6.1
      cvxpy==1.0.25
      marshmallow==3.11.1
      requests==2.25.1
      jenkspy==0.2.0
      pyparsing==2.4.7
      tqdm==4.60.0
      more_itertools==8.7.0
      tabulate==0.8.9
      py4j==0.10.9.2
      pyarrow==4.0.0
      ibm-wos-utils==4.6.*
      
  8. Deaktivieren Sie die virtuelle Umgebung, indem Sie den deactivate Befehl ausführen.

Schritt 5: Das Archiv hochladen

Sie müssen die virtuelle Umgebung komprimieren und die Archivdatei auf HDFS hochladen.

  1. Erstellen Sie eine komprimierte Datei, die die virtuelle Umgebung enthält, indem Sie die folgenden Befehle ausführen:

    zip -r wos_env.zip wos_env/
    ls -alt --block-size=M wos_env.zip
    
  2. Führen Sie den folgenden Befehl aus, um sich bei HDFS zu authentifizieren:

    kinit -kt /home/hadoop/keytabs/hdfs.keytab hdfs/$HOST@#REALM
    
  3. Erstellen Sie unter HDFS einen py_packages Ordner und fügen Sie die wos_env.zip Datei zu diesem Ordner hinzu, indem Sie die folgenden Befehle ausführen:

    hdfs dfs -mkdir /py_packages
    hdfs dfs -put -f wos_env.zip /py_packages
    
  4. Überprüfen Sie, ob Sie die Datei erfolgreich zu „ HDFS “ hinzugefügt haben, indem Sie den folgenden Befehl ausführen:

    hdfs dfs -ls /py_packages
    

    Die folgende Ausgabe wird angezeigt, wenn Sie die Datei erfolgreich hinzugefügt haben:

    Found 1 items
    -rw-r--r--   2 hdfs supergroup  303438930 2020-10-07 16:23 /py_packages/wos_env.zip
    

Schritt 6: Die Anwendung in ein Docker-Image verpacken

Sie müssen die Anwendung in ein Docker-Image packen und das Repository „ GitHub “ klonen, das die Spark-Manager-Referenzanwendung für Batch-Prozesse enthält.

  1. Klonen Sie das Repository „ GitHub “ in den Ordner „wos-spark-manager-api“.

  2. Wechseln Sie in den Ordner „wos-spark-manager-api“.

  3. Aktualisieren Sie die service/security/auth.json Datei mit den Benutzern, die Sie in die Whitelist aufgenommen haben. Die aktualisierte Datei sieht ähnlich wie die folgende Vorlage aus:

    {
      "allowlisted_users": {
        "openscale_user1": "passw0rd",
        "openscale_user2": "passw0rd",
        "openscale_user3": "passw0rd",
        "openscale": "passw0rd"
      }
    }
    
  4. Wenn Sie diese Anwendung für die Ausführung auf einem Kerberized- Hadoop -Cluster packen, müssen Sie außerdem die folgenden Schritte ausführen:

    1. Legen Sie die Datei hdfs.keytab und die krb5.conf Datei im Stammverzeichnis des wos-spark-manager-api Ordners ab

    2. Aktualisieren Sie die service/security/auth.json Datei mit der user_kerberos_mapping Zuordnung, die die von Ihrem Administrator bereitgestellten Prinzipale „ Kerberos “ enthält. Die Datei ähnelt der folgenden Vorlage:

      {
        "allowlisted_users": {
          "openscale_user1": "passw0rd",
          "openscale_user2": "passw0rd",
          "openscale_user3": "passw0rd",
          "openscale": "passw0rd"
        },
        "user_kerberos_mapping" : {
          "openscale_user1": "openscale_user1/$hostname@HADOOPCLUSTER.LOCAL",
          "openscale_user2": "openscale_user2/$hostname@HADOOPCLUSTER.LOCAL",
          "openscale_user3": "openscale_user3/$hostname@HADOOPCLUSTER.LOCAL"
        }
      }
      
    3. Entfernen Sie in der payload/Dockerfile Datei die Auskommentierung der Zeilen 53–55.

  5. Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen:

    docker build -t <repository/image_name>:version> -f payload/Dockerfile .
    
  6. Wenn Sie eine neue virtuelle Maschine ( VM ) zum Verpacken Ihrer Anwendung verwenden, führen Sie die folgenden Schritte aus, um das Docker-Image auf Ihre neue VM zu verschieben:

    1. Speichern Sie das Docker-Image als Tarball, indem Sie den folgenden Befehl ausführen:

      docker save myimage:latest | gzip > myimage_latest.tar.gz
      
    2. Übertrage den Tarball per SCP auf den anderen Remote- VM.

    3. Laden Sie das Tarball-Archiv, indem Sie den folgenden Befehl ausführen:

      docker load < myimage_latest.tar.gz
      

Schritt 7: Starten Sie die Anwendung

  1. Melden Sie sich bei der virtuellen Maschine ( VM ) an, auf der Sie die Anwendung ausführen möchten. Überprüfen Sie, ob auf dem „ VM “ Docker installiert ist.

    Falls sich diese Adresse VM von dem Ort unterscheidet, an dem das Docker-Image erstellt wurde, müssen Sie das Docker-Image speichern und unter dieser Adresse VM laden.

  2. Erstellen Sie die Umgebungsdatei, die zum Starten von Docker verwendet wird. Sie müssen über alle erforderlichen Werte verfügen, um die docker.env Datei zu erstellen.

    1. Erstellen Sie eine docker.env Datei.

    2. Fügen Sie die folgenden Einträge in die docker.env Datei ein:

      WEB_HDFS_URL=http://lamy1.fyre.companyserver.com:50070
      HDFS_FILE_BASE_URL=hdfs://lamy1.fyre.companyserver.com:9000
      SPARK_LIVY_URL=http://sheaffer1.fyre.companyserver.com:8998
      BASE_HDFS_LOCATION=sw/openscale
      WOS_ENV_ARCHIVE_LOCATION=hdfs://lamy1.fyre.companyserver.com:9000/py_packages/wos_env.zip#wos_env
      WOS_ENV_SITE_PACKAGES_PATH=./wos_env/wos_env/lib/python3.6/site-packages:
      
    3. Wenn die Anwendung auf einem Kerberos-fähigen Hadoop -Cluster ausgeführt wird, fügen Sie die folgenden zusätzlichen Einträge zur docker.env Datei

      KERBEROS_ENABLED=true
      HDFS_KEYTAB_FILE_PATH=/opt/ibm/wos/python/keytabs/hdfs.keytab
      SPARK_YARN_KEYTAB_FILE_PATH=/home/hadoop/hadoop/etc/hadoop/yarn.keytab
      
  3. Listen Sie die Docker-Images auf und ermitteln Sie den $IMAGE_ID Wert, indem Sie den folgenden Befehl ausführen:

    docker images
    
  4. Starten Sie den Docker-Container, indem Sie den folgenden Befehl ausführen:

    docker run --env-file docker.env -p 5000:9443 --name wos-spark-manager-api $IMAGE_ID
    

Sie können nun mit dem folgenden URL auf die APIs zugreifen: http://<VM-HOST-NAME>:5000. Sie können die Swagger-Dokumentation jetzt auch unter folgender Adresse einsehen: URL : http://<VM-HOST-NAME>:5000/spark_wrapper/api/explorer.

Weitere Schritte

Konfigurieren Sie die Stapelverarbeitung in „ Watson OpenScale “ (Benutzerdefinierte Datenerfassung).