Come posso aggiornare la mia versione di Python su Amazon EMR e configurare i processi PySpark per l'utilizzo della versione Python aggiornata?
Desidero aggiornare la mia versione di Python su Amazon EMR e configurare i processi PySpark per l'utilizzo della versione Python aggiornata.
Breve descrizione
Le istanze cluster e le applicazioni di sistema usano diverse versioni di Python a seconda delle versioni di rilascio di Amazon EMR seguenti:
- Versioni di rilascio 4.6.0-5.19.0 di Amazon EMR: Python 3.4 è installato sulle istanze cluster. Python 2.7 è l'impostazione predefinita di sistema.
- Versioni di rilascio 5.20.0 e successive di Amazon EMR: Python 3.6 è installato sulle istanze cluster. Per le versioni 5.20.0-5.29.0 di Amazon EMR, Python 2.7 è l'impostazione predefinita di sistema. Per le versioni 5.30.0 e successive, Python 3 è l'impostazione predefinita di sistema.
- Versioni di rilascio 6.0.0 e successive di Amazon EMR: Python 3.7 è installato sulle istanze cluster. Python 3 è l'impostazione predefinita di sistema.
- Versioni di rilascio 7.0.0 e successive di Amazon EMR: Python 3.9 è installato sulle istanze cluster. Python 3 è l'impostazione predefinita di sistema.
Risoluzione
Nota: se si verificano errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta Troubleshooting errors for the AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per aggiornare la versione di Python, punta la variabile di ambiente PYSPARK_PYTHON per la classificazione spark-env alla directory dove è installata la nuova versione di Python:
which example-python-version
Nota: sostituisci example-python-version con la tua nuova versione di Python.
Aggiorna la versione di Python per Amazon EMR in esecuzione su Amazon EC2
Nota: prima di installare una nuova versione di Python e OpenSSL sulle istanze cluster di Amazon EMR, assicurati di testare gli script seguenti.
Per eseguire l'aggiornamento a Python 3.9 per Amazon EMR versione 6.15 in esecuzione su Amazon Elastic Compute Cloud (Amazon EC2), usa lo script che segue. Puoi usare lo script anche per l'aggiornamento a Python 3.10 o versioni successive su Amazon EMR versione 7.0:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
Nota: sostituisci example-python3-version con la tua versione Python 3.
Per l'aggiornamento a Python 3.10 o versioni successive su Amazon EMR 6.15 o versioni precedenti, è necessario OpenSSL. Usa lo script seguente:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
Nota: sostituisci example-python3-version con la tua versione Python 3 ed example-openssl11-version con la tua versione OpenSSL 11. Per ulteriori informazioni, consulta openssl sul sito web di GitHub.
Per utilizzare la versione aggiornata come installazione predefinita di Python 3, usa /usr/local/bin/python3.x come nuovo percorso di Python. Lo script Python precedente è installato in /usr/local/bin/python3.x e l'installazione predefinita di Python è /usr/bin/python3.
Aggiorna la versione di Python su un cluster in esecuzione
Nota: per le versioni 5.36.0 e precedenti di Amazon EMR, puoi aggiornare la versione di Python alla 3.8.
Amazon EMR versione 5.21.0 o precedente
Invia una richiesta di riconfigurazione con un oggetto di configurazione simile al seguente:
[ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "/usr/bin/python3" } } ] } ]
Amazon EMR versione 4.6.0-5.20.x
Completa i passaggi seguenti:
- Usa SSH per connetterti al nodo principale.
- Per cambiare l'ambiente Python predefinito, esegui il comando seguente:
Per verificare che PySpark utilizzi la versione corretta di Python, esegui il comando seguente:sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
Nota: sostituisci example-ip-address con il tuo indirizzo IP.[hadoop@example-ip-address conf]$ pyspark
Esempio di output:Python 3.4.8 (default, Apr 25 2018, 23:50:36) Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.3.1 /_/ Using Python version 3.4.8 (default, Apr 25 2018 23:50:36) SparkSession available as 'spark'.
Nota: la nuova configurazione avrà effetto sul prossimo processo PySpark.
Aggiorna la versione di Python su un nuovo cluster
Per aggiornare la versione di Python quando avvii un cluster su Amazon EMR, aggiungi un'operazione di bootstrap allo script che usi.
Per eseguire l'aggiornamento a Python 3.9 per Amazon EMR versione 6.15 in esecuzione su Amazon EC2, usa lo script che segue. Puoi usare lo script anche per l'aggiornamento a Python 3.10 o versioni successive su Amazon EMR versione 7.0:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
Nota: sostituisci example-python3-version con la tua versione Python 3.
Per l'aggiornamento a Python 3.10 o versioni successive su Amazon EMR 6.15 e versioni precedenti, è necessario OpenSSL. Usa lo script seguente:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config —prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
Nota: sostituisci example-python3-version con la tua versione Python 3 ed example-openssl11-version con la tua versione OpenSSL 11. Per ulteriori informazioni, consulta openssl sul sito web di GitHub.
Quindi, aggiungi un oggetto di configurazione simile al seguente:
[ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "<example-python-version-path>" } } ] } ]
Aggiorna la versione di Python su Amazon EMR su Amazon EKS
Nota: le immagini basate su Amazon Linux 2023 contengono al2023 nel nome. Inoltre, Amazon EMR 6.13.0 e versioni successive utilizza Python 3.9.16 per impostazione predefinita nelle immagini basate su Amazon Linux 2023. Per le immagini basate su Amazon Linux 2, la versione predefinita è Python 3.7.
Per aggiornare la versione di Python per Amazon EMR su Amazon Elastic Kubernetes Service (Amazon EKS), è necessaria un'immagine Docker. Seleziona un URI di base per la tua regione AWS:
FROM example-base-URI-account-id.dkr.ecr.example-region.amazonaws.com/spark/emr-6.15.0 USER root RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall USER hadoop:hadoop
Nota: sostituisci example-base-URI-account-id con l'ID dell'account di base per le immagini Apache Spark, example-region con la tua regione ed example-python3-version con la versione di Python.
Per passare un'immagine quando invii un carico di lavoro Spark, utilizza le sostituzioni di configurazione delle applicazioni, un driver Spark e un'immagine pod primaria:
{ "classification": "spark-defaults", "properties": { "spark.kubernetes.container.image": "example-account-id.dkr.ecr.example-region.amazonaws.com/example-repository" } }
Nota: sostituisci example-account-id con l'ID dell'account che memorizza l'immagine creata, example-repository con il nome del tuo repository che memorizza l'immagine personalizzata ed example-region con la tua regione.
Aggiorna la versione di Python su Amazon EMR serverless
Per aggiornare la versione di Python su un'applicazione Amazon EMR serverless, usa un'immagine Docker per installare la nuova versione di Python:
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest USER root # install python 3 RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall # EMRS will run the image as hadoop USER hadoop:hadoop
Nota: sostituisci example-python-version con la tua versione di Python 3.
Quando invii un processo Spark a un'applicazione Amazon EMR serverless, passa il percorso seguente per usare la nuova versione di Python:
--conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.9 --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9 --conf spark.executorEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 5 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa