2011-11-11 11 views
9

Usando mrjob para ejecutar código python en Elastic MapReduce de Amazon, he encontrado con éxito una manera de actualizar la imagen EMR numpy y scipy.Numpy and Scipy con Amazon Elastic MapReduce

Se ejecuta desde la consola los siguientes comandos de trabajo:

tar -cvf py_bundle.tar mymain.py Utils.py numpy-1.6.1.tar.gz scipy-0.9.0.tar.gz 

    gzip py_bundle.tar 

    python my_mapper.py -r emr --python-archive py_bundle.tar.gz --bootstrap-python-package numpy-1.6.1.tar.gz --bootstrap-python-package scipy-0.9.0.tar.gz > output.txt 

Este Bootstraps con éxito la última numpy y SciPy en la imagen y funciona perfectamente. Mi pregunta es una cuestión de velocidad. Esto demora 21 minutos en instalarse en una pequeña instancia.

¿Alguien tiene alguna idea de cómo acelerar el proceso de actualización de numpy y scipy?

+0

Su problema es que es la instancia pequeña que es lenta. Creo que no verás una aceleración real a menos que pases a instancias más grandes de Amazon. ¿Es esto 21 minutos más que los ~ 5-6 minutos que generalmente requiere que EC2 active las instancias? – ely

+1

Acepto que la comunicación con el giro original lleva mucho tiempo. Alguien en la comunidad de mrjob recomendó hacer esta instalación para una instancia de trabajador, luego usando ssh para iniciar sesión en la instancia de trabajador, descargue el directorio de instalación completo. Luego solo paso ese directorio de instalación completo como un archivo zip con mis archivos. Python elige usar el NumPy local y SciPy en lugar de las versiones instaladas de hadoop. – jtman

Respuesta

5

La única manera de hacer algo con una imagen EMR es mediante el uso de acciones de arranque. Hacer esto desde la consola significa que solo cambiará el nodo maestro y no los nodos de tareas que procesan. Las acciones de Bootstrap se ejecutan una vez al inicio en todos los nodos y pueden ser un script simple que obtiene la ejecución de shell.

elastic-mapreduce --create --bootstrap-action "s3://bucket/path/to/script" ... 

Para acelerar cambios en la imagen de EMR, alquitrán de seguridad de los archivos post-instaladas y subir a S3. A continuación, use una acción de arranque para descargar e implementar. Deberá mantener archivos separados para máquinas de 32 bits (micro, pequeño, mediano) y de 64 bits.

El comando de descarga de S3 en el guión es:

hadoop fs -get s3://bucket/path/to/archive /tmp/archive 
2

La respuesta a esta pregunta actual es que NumPy ya está instalado en EMR, ahora.

Si desea actualizar NumPy a una versión más reciente que la disponible, puede ejecutar una secuencia de comandos (como una acción de arranque) que hace sudo yum -y install numpy. NumPy se instala en poco tiempo.

Cuestiones relacionadas