Come posso installare le librerie Python su cluster Amazon EMR e Amazon EMR serverless e risolvere i problemi ad esse correlati?
Desidero installare le librerie Python su cluster Amazon EMR e Amazon EMR serverless e risolvere i problemi ad esse correlati.
Risoluzione
Installa le librerie Python su cluster Amazon EMR
Per installare le librerie Python su cluster Amazon EMR, utilizza un'operazione bootstrap.
Amazon EMR utilizza puppet, un meccanismo di implementazione di Apache BigTop, per configurare e inizializzare le applicazioni sulle istanze. Instance-controller è un componente software di Amazon EMR che viene eseguito su ogni istanza del cluster. Instance-controller inizializza e quindi esegue il provisioning delle istanze in base alla configurazione delle stesse.
Per avviare NodeProvisioner all'avvio del cluster, Instance-controller esegue lo script del nodo di provisioning /usr/share/aws/emr/node-provisioner/bin/provision-node. Quindi, NodeProvisioner esegue il provisioning di tutte le applicazioni della distribuzione Amazon EMR per la configurazione di nodi e cluster. NodeProvisioner è un'operazione bootstrap finale che viene eseguita dopo tutte le altre operazioni bootstrap eseguite su ciascun nodo del cluster.
Per i cluster Amazon EMR più recenti, le operazioni bootstrap vengono eseguite prima che Amazon EMR installi le applicazioni specificate al momento della creazione del cluster. Inoltre, l'operazione bootstrap viene eseguita prima che i nodi del cluster elaborino i dati. Se aggiungi nodi a un cluster in esecuzione, le operazioni bootstrap vengono eseguite su tali nodi. È possibile creare operazioni bootstrap personalizzate e specificare le applicazioni da installare quando si crea il cluster.
Installa le librerie Python su cluster Amazon EMR serverless
Per installare le librerie Python e utilizzarne le funzionalità all'interno dei tuoi processi e notebook di Spark, utilizza uno dei seguenti metodi in base al tuo caso d'uso:
- Usa le funzionalità native di Python.
- Crea un ambiente virtuale Python.
- Configura i tuoi processi PySpark direttamente per l’uso delle librerie Python comuni.
Risoluzione dei problemi relativi alle librerie Python
Le librerie Python installate tramite operazioni bootstrap potrebbero essere sostituite dalle librerie predefinite di Amazon EMR. Per risolvere questo problema, crea un'operazione bootstrap ritardata o un'operazione bootstrap di seconda fase come codice in esecuzione. In alternativa, installa i pacchetti dopo aver ricevuto il messaggio NODEPROVISIONSTATE SUCCESSFUL.
La seguente operazione bootstrap aggiorna la libreria dopo la fase di provisioning dell'applicazione. Aggiungi questo script come script di bootstrap che viene eseguito in background e quindi termina, consentendo al provisioning del cluster di continuare. Questo script continua a monitorare il provisioning dei nodi e aggiorna la libreria dopo il provisioning.
Esempio di script che aggiorna la versione NumPy:
#!/bin/bash set -x cat > /var/tmp/fix-bootstap.sh <<'EOF' #!/bin/bash set -x while true; do NODEPROVISIONSTATE=`sed -n '/localInstance [{]/,/[}]/{ /nodeProvisionCheckinRecord [{]/,/[}]/ { /status: / { p } /[}]/a } /[}]/a }' /emr/instance-controller/lib/info/job-flow-state.txt | awk ' { print $2 }'` if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then echo "Running my post provision bootstrap" # your code here sudo /mnt/notebook-env/bin/pip install pandas==1.3.5 sudo /mnt/notebook-env/bin/pip install boto==2.49.0 sudo /mnt/notebook-env/bin/pip install boto3==1.25.0 exit else echo "Sleeping Till Node is Provisioned" sleep 10 fi done EOF chmod +x /var/tmp/fix-bootstap.sh nohup /var/tmp/fix-bootstap.sh 2>&1 &
Nota: i container YARN che eseguono un pacchetto Python potrebbero non utilizzare un pacchetto aggiornato eventualmente installato con la risoluzione precedente. Di conseguenza, riceverai errori module not found quando tenti di installare un pacchetto aggiornato. Per evitare errori module not found interroga lo stato del servizio nodemanager. Quindi, esegui l'operazione bootstrap desiderata all'avvio del nodemanager.

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa