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_transactionTabelle, 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:50070HDFS Datei „base URL “:
hdfs://$hostname:9000Livy 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.keytabin 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.
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.9Installieren Sie das
python3-develPaket, das die GNU Compiler Collection (GCC)-Bibliotheken installiert, indem Sie den folgenden Befehl ausführen:yum install python3-develWechseln Sie in das Verzeichnis, in dem die virtuelle Umgebung „ Python “ erstellt wurde, beispielsweise in den
/optOrdner:cd /optLöschen Sie alle zuvor erstellten virtuellen Umgebungen, indem Sie den folgenden Befehl ausführen.
rm -fr wos_env rm -fr wos_env.zipDer
wos_envOrdner enthält eine virtuelle Umgebung namens „ Python “ mit Spark-Job-Abhängigkeiten.Erstellen und aktivieren Sie die virtuelle Umgebung, indem Sie die folgenden Befehle ausführen.
python -m venv wos_env source wos_env/bin/activateDie
wos_envvirtuelle Umgebung wird erstellt und dersourceBefehl aktiviert die virtuelle Umgebung.Aktualisieren Sie die pip-Umgebung, indem Sie den folgenden Befehl ausführen:
pip install --upgrade pipUm 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.txtDatei einfügen und die Befehle gleichzeitig ausführen.Wenn Sie Python 3.7 verwenden, erstellen Sie die
requirements.txtDatei, indem Sie die folgenden Zeilen zur Datei hinzufügen. Führen Sie dann denpython -m pip install -r requirements.txtBefehl 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.*
Deaktivieren Sie die virtuelle Umgebung, indem Sie den
deactivateBefehl ausführen.
Schritt 5: Das Archiv hochladen
Sie müssen die virtuelle Umgebung komprimieren und die Archivdatei auf HDFS hochladen.
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.zipFühren Sie den folgenden Befehl aus, um sich bei HDFS zu authentifizieren:
kinit -kt /home/hadoop/keytabs/hdfs.keytab hdfs/$HOST@#REALMErstellen Sie unter HDFS einen
py_packagesOrdner und fügen Sie diewos_env.zipDatei 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Überprüfen Sie, ob Sie die Datei erfolgreich zu „ HDFS “ hinzugefügt haben, indem Sie den folgenden Befehl ausführen:
hdfs dfs -ls /py_packagesDie 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.
Klonen Sie das Repository „ GitHub “ in den Ordner „wos-spark-manager-api“.
Wechseln Sie in den Ordner „wos-spark-manager-api“.
Aktualisieren Sie die
service/security/auth.jsonDatei 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" } }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:
Legen Sie die Datei
hdfs.keytabund diekrb5.confDatei im Stammverzeichnis deswos-spark-manager-apiOrdners abAktualisieren Sie die
service/security/auth.jsonDatei mit deruser_kerberos_mappingZuordnung, 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" } }Entfernen Sie in der
payload/DockerfileDatei die Auskommentierung der Zeilen 53–55.
Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen:
docker build -t <repository/image_name>:version> -f payload/Dockerfile .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:
Speichern Sie das Docker-Image als Tarball, indem Sie den folgenden Befehl ausführen:
docker save myimage:latest | gzip > myimage_latest.tar.gzÜbertrage den Tarball per SCP auf den anderen Remote- VM.
Laden Sie das Tarball-Archiv, indem Sie den folgenden Befehl ausführen:
docker load < myimage_latest.tar.gz
Schritt 7: Starten Sie die Anwendung
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.
Erstellen Sie die Umgebungsdatei, die zum Starten von Docker verwendet wird. Sie müssen über alle erforderlichen Werte verfügen, um die
docker.envDatei zu erstellen.Erstellen Sie eine
docker.envDatei.Fügen Sie die folgenden Einträge in die
docker.envDatei 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:Wenn die Anwendung auf einem Kerberos-fähigen Hadoop -Cluster ausgeführt wird, fügen Sie die folgenden zusätzlichen Einträge zur
docker.envDateiKERBEROS_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
Listen Sie die Docker-Images auf und ermitteln Sie den
$IMAGE_IDWert, indem Sie den folgenden Befehl ausführen:docker imagesStarten 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.