Question

Je suis dans le scénario où j'ai deux emplois MapReduce. Je suis plus à l'aise avec python et l'intention de l'utiliser pour écrire des scripts MapReduce et utiliser Hadoop streaming pour la même chose. est-il une pratique à la fois la chaîne les travaux suivants se forment lorsque le streaming Hadoop est utilisé?

carte1 -> Reduce1 -> carte2 -> Reduce2

Je l'ai entendu beaucoup de méthodes pour y parvenir en Java, mais je besoin de quelque chose pour Hadoop en continu.

Était-ce utile?

La solution

Voici un blog sur la façon d'utiliser Cascading et en streaming. http: //www.xcombinator. com / 2009/11/18 / comment à utiliser en cascade avec Hadoop streaming /

La valeur ici est que vous pouvez mélanger java (flux requête Cascading) avec vos opérations de diffusion personnalisée dans la même application. Je trouve cela beaucoup moins fragile que les autres méthodes.

Note, l'objet Cascade Cascading vous permet de multiples chaînes flux (via le blog ci-dessus poster votre travail en streaming deviendrait un MapReduceFlow).

Disclaimer: Je suis l'auteur de Cascading

Autres conseils

Vous pouvez essayer MRJob Yelp pour faire votre travail .. Son une opensource MapReduce Library qui vous permet d'écrire des emplois chaînés qui peuvent être exécutés au sommet Hadoop en streaming sur votre cluster Hadoop ou EC2 .. Son assez élégant et facile à utiliser, et a une méthode appelée étapes que vous peut passer outre de préciser la chaîne exacte des cartographes et réducteurs que vous voulez que vos données passent par.

Commander la source https://github.com/Yelp/mrjob
et la documentation http://packages.python.org/mrjob/

En général, la façon dont je le fais avec Hadoop en streaming et Python est à partir de mon script bash que je crée pour exécuter les travaux en premier lieu. Toujours je lance à partir d'un script bash, de cette façon que je peux recevoir des courriels sur des erreurs et des e-mails sur le succès et les rendre plus souples passant dans les paramètres d'un autre emballage de script Ruby ou Python il que le travail peut dans un système de traitement d'événement plus important.

Ainsi, la sortie de la première commande (travail) est l'entrée à la commande suivante (emploi) qui peuvent être des variables dans votre script bash passé comme un argument de la ligne de commande (simple et rapide)

Vous voudrez peut-être à la caisse oozie http://yahoo.github.com/oozie/design. html un moteur de workflow pour Hadoop qui aidera à faire cela aussi (supporte le streaming, pas un problème). Je n'ai pas eu quand j'ai commencé donc je fini par avoir à construire ma propre chose, mais c'est un système kewl et utile !!!!

Si vous êtes déjà en train d'écrire votre mappeur et réducteur en Python, j'envisageraient d'utiliser Dumbo où une telle opération est simple. La séquence de votre carte à réduire l'emploi, votre mappeur, réducteur, etc. sont tous dans un script python qui peut être exécuté à partir de la ligne de commande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top