Wie kann ich Probleme bei der Installation von Python-Bibliotheken in meinem EMR-Cluster beheben?

Lesedauer: 4 Minute
0

Ich möchte Probleme bei der Installation von Python-Bibliotheken in meinem Amazon-EMR-Cluster beheben

Kurzbeschreibung

Ich versuche, Python-Bibliotheken auf meinem EMR-Cluster zu installieren, aber ich sehe eines der folgenden Probleme:

  • Ich kann keine Python-Bibliotheken auf meinem EMR-Cluster installieren.
  • Das Python-Paket ist auf Amazon EMR nicht verfügbar.
  • Installierte Python-Pakete sind auf neu bereitgestellten Kern- oder Aufgabenknoten nicht verfügbar.

Sie können Python-Bibliotheken auf EMR-Clustern installieren, indem Sie entweder eine Bootstrap-Aktion verwenden oder sich manuell bei jedem Knoten anmelden. Installieren Sie Python-Bibliotheken mithilfe von Bootstrap-Aktionen, um sicherzustellen, dass die Bibliotheken während der Cluster-Bereitstellung und Cluster-Größenänderung automatisch auf allen Knoten installiert werden.

Lösung

Ich kann keine Python-Bibliotheken auf meinem EMR-Cluster installieren oder das Python-Paket ist auf Amazon EMR nicht verfügbar

Melden Sie sich bei dem Knoten an, auf dem der Fehler „Paket fehlt“ aufgetreten ist. Verwenden Sie dann den folgenden Befehl, um zu überprüfen, ob die Python-Bibliotheken installiert sind:

$ sudo pip3 freeze | grep pandas
pandas==1.3.5
$ sudo pip3 freeze | grep numpy
numpy==1.21.6

Oder stellen Sie sicher, dass Python-Bibliotheken von der Python-Shell aus installiert sind:

$ python
Python 3.7.15 (default, Oct 31 2022, 22:44:31)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> import numpy as np

Wenn die vorherigen Befehle einen Fehler wie ModuleNotFoundError: Kein Modul namens „python_library“ zurückgeben, ist die Bibliothek nicht installiert.

Sie können Python-Bibliotheken mithilfe von Pip-Befehlen auf EMR-Clustern installieren, wie in den folgenden Beispielen gezeigt:

sudo pip3 install pandas scipy sklearn
sudo pip3 install file://requirements.txt

Im vorherigen Beispiel ist requirements.txt eine Liste von Python-Paketen und –Bibliotheken, die Sie installieren möchten.

Weitere Informationen finden Sie unter:

Verwenden Sie den Befehl pip install, um zusätzliche benutzerdefinierte Bibliotheken zu installieren.

Python ist standardmäßig in Amazon EMR installiert. Es sind jedoch nicht alle Python-Bibliotheken installiert. Weitere Informationen finden Sie unter Installation und Verwendung von Kerneln und Bibliotheken.

Verwenden Sie den Befehl sudo pip3 freeze, um eine Liste der auf dem Cluster installierten Python-Bibliotheken anzuzeigen. Im Folgenden finden Sie ein Beispiel für den Befehl sudo pip3 freeze und eine Beispielausgabe:

$ sudo pip3 freeze
aws-cfn-bootstrap==2.0 
beautifulsoup4==4.9.3
boto==2.49.0 
click==8.1.3 
docutils==0.14 
jmespath==1.0.1 
joblib==1.2.0 l
ockfile==0.11.0 
lxml==4.9.1 
mysqlclient==1.4.2 
nltk==3.7 
nose==1.3.4 
numpy==1.20.0 
py-dateutil==2.2 
pystache==0.5.4 
python-daemon==2.2.3 
python37-sagemaker-pyspark==1.4.2 
pytz==2022.6
PyYAML==5.4.1 
regex==2021.11.10 
simplejson==3.2.0 
six==1.13.0 
tqdm==4.64.1 
windmill==1.6

Python-Pakete sind während der Clusterskalierung auf dem neu bereitgestellten Kern- oder Aufgabenknoten nicht verfügbar

Manuell auf einzelnen Knoten installierte Python-Pakete sind während der Clusterskalierung möglicherweise nicht auf neu bereitgestellten Kern- oder Aufgabenknoten verfügbar.

Um sicherzustellen, dass Pakete in neu bereitgestellten Knoten vorhanden sind, verwenden Sie eine Bootstrap-Aktion, um Bibliotheken zu installieren, anstatt sie manuell zu installieren.

Es kann vorkommen, dass das gewünschte Paket nicht verfügbar ist, obwohl ein Bootstrap-Skript für die Installation vorhanden ist. Überprüfen Sie in diesen Fällen die Bootstrap-Skriptprotokolle, um festzustellen, was schief gelaufen ist. Gehen Sie wie folgt vor, um die Bootstrap-Skriptprotokolle zu überprüfen:

Wenn die neue Instance läuft:

1.    Stellen Sie mithilfe von SSH eine Verbindung zum Primärknoten her.

2.    Überprüfen Sie die Bootstrap-Protokolle an den folgenden Stellen auf Fehler:

  • /var/log/bootstrap-Aktionen/n/stderr
  • /var/log/bootstrap-aktions/n/stdout

In den vorherigen Pfaden steht N für die Bootstrap-Skriptnummer (z. B. 1,2,3 usw.).

Wenn die Bereitstellung der neuen Instance fehlgeschlagen ist:

Die Bootstrap-Protokolle werden im Amazon Simple Storage Service (Amazon S3) -Bucket erfasst, den Sie für die Amazon EMR-Protokollierung konfiguriert haben. Die Pfade sind:

  • s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/N/stdout
  • s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/N/stderr

In den vorherigen Pfaden steht N für die Bootstrap-Skriptnummer (z. B. 1,2,3 usw.).


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr