2012-04-19 17 views
5

Tengo un modelo científico de Python que llama a algunos códigos C y usa numpy, scipy y muchos módulos de análisis geográficos. Me gustaría implementarlo en EC2 pero aún no sé mucho sobre EC2.Implementación del algoritmo científico python en Amazon ec2

He comprobado que podría usar el paquete StarCluster para implementar mi pila después de configurar las AMI que se derivan de StarCluster AMI. Estos ya tienen numpy y scipy e ipython, así que todo lo que tendré que hacer es agregar módulos geográficos.

Mi plan era escribir una GUI independiente que se ejecuta en las máquinas de los clientes y se asegura de que sus entradas sean válidas para mi modelo. Luego, la GUI independiente envía hasta 10 GB de archivos comprimidos a una ubicación FTP. Luego, inician sesión en mi página web que ejecuto en EC2 donde configuran las propiedades de ejecución (n. ° de instancias, n. ° de ejecuciones de modelos). Esa página web inicia un script que hace el trabajo del cliente en el clúster de tamaño que especificó. El postprocesador procesa el resultado del modelo y escribe los resultados de páginas web y gráficos que inicialmente están protegidos por contraseña para que el cliente solo los vea. Mi modelo se ejecuta consiste en iteraciones individuales que pueden tomar de 5 minutos a 3 horas.

¿Alguien puede ofrecer algún consejo para la configuración ideal con este modelo? Creo que puedo averiguar la parte científica de la misma, pero no veo cuál es el punto de partida es para el funcionamiento de la interfaz web ...

Gracias

+0

Guau, ¡esa es toda una pregunta! Creo que sería difícil ofrecerle una respuesta simple y concisa que abarque todos los aspectos del sistema planificado que mencionó, entonces ¿podría publicar preguntas más pequeñas y específicas sobre los componentes individuales? – ThePhysicist

Respuesta

2

proyecto interesante!

La adición de módulos al AMI desplegado en AWS EC2 se puede hacer a través de pip. Primero necesitarás acceso SSH a tu instancia. Documentación sobre este está aquí: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html Entonces, si no lo tiene ya instalado, puede instalar pip & sus paquetes adicionales & módulos de la siguiente manera:

sudo apt-get install -y python-pip 
sudo pip install numpy (already installed so no need for this) 
sudo pip install scipy (same as above) 

Ubuntu Debian & sudo apt-get install python -numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Las versiones en Ubuntu 12.10 y Debian 7.0 cumplen con la especificación actual de pila Scipy. Los usuarios también pueden querer agregar el repositorio de NeuroDebian para paquetes adicionales de Scipy. Fedora sudo yum install python-numpy scipy matplotlib ipython pitón pitón-pandas-nariz

Los usuarios de Fedora 17 y luego sympy anterior debe actualizar IPython usando pip: sudo pip instalar --upgrade ipython (información anterior encontrado a través documentación scipy: http://www.scipy.org/install.html)

en cuanto a sus planes para la gran carga de archivos GUI &, echar un vistazo a AWS S3 (que aunque esto tiene algunas limitaciones) para el almacenamiento de archivos & dependiendo de lo lejos que quiere empujar su solución, puede utilizar la carga de archivos fragmentados o transmitir una solicitud de varias partes similar a estas soluciones para el archivo tran SFERS:

https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads 
https://devcenter.heroku.com/articles/paperclip-s3 
https://github.com/heiflo/play21-file-upload-streaming 
https://github.com/netty/netty/issues/845 
https://github.com/playframework/playframework/pull/884 
https://github.com/floatingfrisbee/amazonfileupload 
http://blog.assimov.net/blog/2011/04/03/multi-file-upload-with-uploadify-and--carrierwave-on-rails-3/ 

(una búsqueda rápida de "fragmentados github la carga de archivos" o "fragmentada código de envío de archivos Google" debe subir un montón de opciones en términos de código & información detallada disponible.)

Sin embargo, una dirección más fácil para la carga de archivos/transferencia puede ser la de buscar soluciones como éstas:

http://www.bucketexplorer.com/be-download.html 
https://forums.aws.amazon.com/thread.jspa?messageID=258228&tstart=0 
https://forums.aws.amazon.com/thread.jspa?messageID=257781&tstart=0 
http://www.jfileupload.com/products/js3upload/index.html 
http://codeonaboat.wordpress.com/2011/04/22/uploading-a-file-to-amazon-s3-using-an-asp-net-mvc-application-directly-from-the-users-browser/ 

En cualquier caso, usted querrá asegurarse de que su entorno en su instancia EC2 &/o sus depósitos S3 están configurados para permitir el procesamiento de archivos de gran tamaño &. Por ejemplo, su versión AMIs php necesita ser compilada & configuración vía php.ini para cargar archivos en ciertos tamaños - también hay tiempos de espera que debe tener en cuenta - y es probable que necesite una AMI de 64 bits junto con un gran EBS para alimentar todo esto

En cuanto a los componentes front-end menos complejos de su GUI, jQuery o node.js son buenos puntos de partida. También hay un montón de paquetes de código & documentación en GitHub o en los foros de AWS EC2/S3 tales como los siguientes:

https://github.com/josegonzalez/upload 

Sin saber sus requerimientos específicos, planes & limitaciones de tiempo/presupuesto, eso es lo más consejos que pueda dar. Sin embargo, no dude en responder a este hilo o hacerme ping directamente con cualquier otra pregunta.