Beheben Sie Fehler bei Studio-Notebooks für Managed Service für Apache Flink - Managed Service für Apache Flink

Amazon Managed Service für Apache Flink war zuvor als Amazon Kinesis Data Analytics für Apache Flink bekannt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beheben Sie Fehler bei Studio-Notebooks für Managed Service für Apache Flink

Dieser Abschnitt enthält Informationen zur Fehlerbehebung für Studio-Notebooks.

Stoppen Sie eine blockierte Anwendung

Um eine Anwendung zu beenden, die in einem vorübergehenden Zustand feststeckt, rufen Sie die StopApplicationAktion auf, wobei der Force Parameter auf true gesetzt ist. Weitere Informationen finden Sie unter Ausführen von Anwendungen im Managed Service für Apache Flink Entwicklerhandbuch.

Stellen Sie die Anwendung als dauerhafte Anwendung VPC ohne Internetzugang bereit

Die deploy-as-application Funktion Managed Service for Apache Flink Studio unterstützt keine VPC Anwendungen ohne Internetzugang. Wir empfehlen, dass Sie Ihre Anwendung in Studio erstellen und dann Managed Service für Apache Flink verwenden, um manuell eine Flink-Anwendung zu erstellen und die ZIP-Datei auszuwählen, die Sie in Ihrem Notebook erstellt haben.

Die folgenden Schritte beschreiben, wie Sie dies tun:

  1. Erstellen und exportieren Sie Ihre Studio-Anwendung in Amazon S3. Dies sollte eine ZIP-Datei sein.

  2. Erstellen Sie manuell eine Anwendung, die Managed Service für Apache Flink nutzt, mit einem Codepfad, der auf den Speicherort der ZIP-Datei in Amazon S3 verweist. Darüber hinaus müssen Sie die Anwendung mit den folgenden env-Variablen (2 groupID, 3 var insgesamt) konfigurieren:

  3. kinesis.analytics.flink.run.options

    1. python: source/note.py

    2. jar-Datei: lib/ .jar PythonApplicationDependencies

  4. managed.deploy_as_app.options

    1. DatenbankARN: <glue database ARN (Amazon Resource Name)>

  5. Möglicherweise müssen Sie den IAM Rollen Managed Service für Apache Flink Studio und Managed Service für Apache Flink für die Dienste, die Ihre Anwendung verwendet, Berechtigungen erteilen. Sie können dieselbe IAM Rolle für beide Apps verwenden.

Deploy-as-app Reduzierung der Größe und der Bauzeit

Studio deploy-as-app für Python-Anwendungen packt alles, was in der Python-Umgebung verfügbar ist, da wir nicht ermitteln können, welche Bibliotheken Sie benötigen. Dies kann zu einer Größe führen, die größer als nötig ist deploy-as-app. Das folgende Verfahren zeigt, wie Sie die Größe der deploy-as-app Python-Anwendung reduzieren können, indem Sie Abhängigkeiten deinstallieren.

Wenn Sie eine Python-Anwendung mit deploy-as-app Funktionen von Studio erstellen, sollten Sie erwägen, vorinstallierte Python-Pakete aus dem System zu entfernen, wenn Ihre Anwendungen nicht davon abhängig sind. Dies trägt nicht nur dazu bei, die endgültige Artefaktgröße zu reduzieren, um zu verhindern, dass das Servicelimit für die Anwendungsgröße überschritten wird, sondern verbessert auch die Erstellungszeit von Anwendungen, die diese Funktion verwenden. deploy-as-app

Sie können den folgenden Befehl ausführen, um alle installierten Python-Pakete mit ihrer jeweiligen installierten Größe aufzulisten und Pakete mit signifikanter Größe selektiv zu entfernen.

%flink.pyflink !pip list --format freeze | awk -F = {'print $1'} | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{gsub("-","_",$1); print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null | sort -hr
Anmerkung

apache-beam wird von Flink Python zum Betrieb benötigt. Sie sollten dieses Paket und seine Abhängigkeiten niemals entfernen.

Im Folgenden finden Sie eine Liste der vorinstallierten Python-Pakete in Studio V2, deren Entfernung in Betracht gezogen werden kann:

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
So entfernen Sie ein Python-Paket aus dem Zeppelin-Notebook:
  1. Prüfen Sie, ob Ihre Anwendung von dem Paket oder einem seiner konsumierenden Pakete abhängt, bevor Sie es entfernen. Mit pipdeptree können Sie die Abhängigkeiten eines Pakets identifizieren.

  2. Führen Sie den folgenden Befehl aus, um ein Paket zu entfernen:

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Wenn Sie ein Paket abrufen müssen, das Sie versehentlich entfernt haben, führen Sie den folgenden Befehl aus:

    %flink.pyflink !pip install <package-to-install>
Beispiel: Entfernen Sie scipy das Paket, bevor Sie Ihre Python-Anwendung mit deploy-as-app Funktion bereitstellen.
  1. Verwenden Sie pipdeptree, um alle scipy-Verbraucher zu ermitteln und zu überprüfen, ob Sie scipy sicher entfernen können.

    • Installieren Sie das Tool über das Notebook:

      %flink.pyflink !pip install pipdeptree
    • Rufen Sie den umgekehrten Abhängigkeitsbaum von scipy ab, indem Sie Folgendes ausführen:

      %flink.pyflink !pip -r -p scipy

      Sie sollten eine ähnliche Ausgabe wie die folgende sehen (aus Platzgründen gekürzt):

      ... ------------------------------------------------------------------------ scipy==1.8.0 ├── plotnine==0.5.1 [requires: scipy>=1.0.0] ├── seaborn==0.9.0 [requires: scipy>=0.14.0] └── statsmodels==0.12.2 [requires: scipy>=1.1] └── plotnine==0.5.1 [requires: statsmodels>=0.8.0]
  2. Prüfen Sie sorgfältig die Verwendung von seaborn, statsmodels und plotnine in Ihren Anwendungen. Wenn Ihre Anwendungen nicht von scipy, seaborn, statemodels oder plotnine abhängig sind, können Sie alle diese Pakete oder nur diejenigen entfernen, die Ihre Anwendungen nicht benötigen.

  3. Entfernen Sie das Paket, indem Sie Folgendes ausführen:

    !pip uninstall -y scipy plotnine seaborn statemodels

Jobs stornieren

In diesem Abschnitt erfahren Sie, wie Sie Apache-Flink-Aufträge abbrechen, auf die Sie von Apache Zeppelin aus nicht zugreifen können. Wenn Sie einen solchen Auftrag abbrechen möchten, rufen Sie das Apache-Flink-Dashboard auf, kopieren Sie die Auftrags-ID und verwenden Sie sie dann in einem der folgenden Beispiele.

Um einen einzelnen Auftrag abzubrechen:

%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)

Um alle laufenden Aufträge abzubrechen:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: if (job["status"] == "RUNNING"): print(requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False))

Um alle Aufträge abzubrechen:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False)

Starten Sie den Apache Flink-Interpreter neu

Um den Apache-Flink-Interpreter in Ihrem Studio-Notebook neu zu starten

  1. Wählen Sie Konfiguration in der oberen rechten Ecke des Bildschirms.

  2. Wählen Sie Interpreter.

  3. Wählen Sie Neustart und dann OK.