¿Cómo instalo y soluciono los problemas de las bibliotecas de Python en los clústeres de Amazon EMR y Amazon EMR sin servidor?

4 minutos de lectura
0

Quiero instalar y solucionar problemas de bibliotecas de Python en clústeres de Amazon EMR y Amazon EMR sin servidor.

Resolución

Instalación de bibliotecas de Python en clústeres de Amazon EMR

Para instalar bibliotecas de Python en clústeres de Amazon EMR, utilice una acción de arranque.

Amazon EMR usa puppet, un mecanismo de implementación de Apache BigTop, para configurar e inicializar las aplicaciones en las instancias. El controlador de instancias es un componente de software de Amazon EMR que se ejecuta en todas las instancias del clúster. El controlador de instancias se inicializa y, a continuación, aprovisiona las instancias en función de la configuración de la instancia.

Para iniciar NodeProvisioner al iniciar el clúster, el controlador de instancias ejecuta el script de nodo de aprovisionamiento /usr/share/aws/emr/node-provisioner/bin/provision-node. A continuación, NodeProvisioner aprovisiona todas las aplicaciones de distribución de Amazon EMR para la configuración de nodos y clústeres. NodeProvisioner es una acción de arranque final que se ejecuta después de que todas las demás acciones de arranque se ejecuten en cada nodo del clúster.

Para los clústeres de Amazon EMR más recientes, las acciones de arranque se ejecutan antes de que Amazon EMR instale las aplicaciones especificadas en la creación del clúster. Además, la acción de arranque se ejecuta antes de que los nodos del clúster procesen los datos. Si agrega nodos a un clúster en ejecución, las acciones de arranque se ejecutan en esos nodos. Puede crear acciones de arranque personalizadas y especificar las aplicaciones que desea instalar al crear el clúster.

Instalación de bibliotecas de Python en clústeres de Amazon EMR sin servidor

Para instalar bibliotecas de Python y usar sus capacidades en sus trabajos y cuadernos de Spark, utilice uno de los siguientes métodos según su caso práctico:

Solución de problemas con las bibliotecas de Python

Las bibliotecas de Python que se instalan mediante acciones de arranque pueden quedar invalidadas por las bibliotecas predeterminadas de Amazon EMR. Para resolver este problema, cree una acción de arranque retrasada o una acción de arranque de segunda etapa como código en ejecución. O bien, instale los paquetes después de recibir el mensaje NODEPROVISIONSTATE SUCCESSFUL.

La siguiente acción de arranque actualiza la biblioteca después de la fase de aprovisionamiento de la aplicación. Agregue este script como un script de arranque que se ejecuta en segundo plano y se cierra para que el aprovisionamiento del clúster continúe. Este script continúa supervisando el aprovisionamiento de nodos y actualiza la biblioteca después del aprovisionamiento.

Ejemplo de script que actualiza la versión de 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: Es posible que los contenedores YARN que ejecutan un paquete de Python no usen un paquete actualizado que se pueda instalar con la resolución anterior. Como resultado, verá errores de módulo no encontrado cuando intente instalar un paquete actualizado. Para evitar errores de módulo no encontrado, sondee el estado del servicio nodemanager. A continuación, ejecute la acción de arranque deseada cuando se inicie nodemanager.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses