0

Je travaille sur un petit projet pour me familiariser avec les services Web Amazon. J'essaye de faire une application web simple; lorsqu'un bouton est pressé, un travail mapreduce est lancé et la sortie est renvoyée sur le navigateur. Quel serait le meilleur moyen de le faire? De plus, existe-t-il un moyen de lancer un travail d'amazon elastic mapreduce via la ligne de commande?Démarrer le travail Amazon Elastic MapReduce à distance?

Répondre

2

Vous pouvez utiliser AWS SDK dans la langue dans laquelle vous écrivez votre application Web pour effectuer des appels à EMR afin de soumettre un travail. Je travaille principalement avec python, donc je suis très familier avec la bibliothèque Python Boto, ce qui me permet de télécharger du code et des données sur s3, de configurer un flux de travaux et de lancer ce flux de travaux.

Vous ne voulez pas lancer le travail et renvoyer les résultats dans la même requête HTTP car il faudra plusieurs minutes pour démarrer le cluster avant que le travail ne puisse être exécuté. Une application Web avec des pages qui ne répondent pas aux minutes n'est pas une bonne expérience utilisateur. Cependant, il suffit de soumettre un flux de travail pour prendre quelques secondes. Vous devez créer le flux de travaux et suivre les identifiants du flux de travaux dans votre application Web. Étant donné un ID de flux de travaux, vous ne devriez pas avoir trop de problèmes à récupérer des données de journaux ou à les sortir du flux de travail lorsque l'utilisateur revient et que le travail est terminé.

Voici un exemple de la façon dont on pourrait lancer un travail élastique avec M. Boto:

import boto 
from boto.emr.step import StreamingStep 

conn = boto.connect_emr() 
step = StreamingStep(name='My wordcount example', 
        mapper='s3n://elasticmapreduce/samples/wordcount/wordSplitter.py', 
        reducer='aggregate', 
        input='s3n://elasticmapreduce/samples/wordcount/input', 
        output='s3n://<my output bucket>/output/wordcount_output') 
jobid = conn.run_jobflow(name='My jobflow', 
         log_uri='s3://<my log uri>/jobflow_logs', 
         steps=[step]) 
+0

oui merci Mike. J'ai beaucoup utilisé python ces derniers temps aussi. Les bibliothèques boto et paramiko sont incroyablement utiles pour créer des clusters et y entrer pour exécuter des commandes. – Kareem

+0

Pas de problème, Kareem. :-) Alors, tu es une application web en Python alors? – stderr

Questions connexes