Un point de départ pour apprendre à implémenter MapReduce / Hadoop en Python?
J'ai récemment commencé à faire de l'analyse de données et j'ai appris pas mal au cours de la dernière année (pour le moment, à peu près exclusivement à l'aide de Python). Je sens que la prochaine étape est de commencer à former moi-même dans MapReduce/Hadoop. Je n'ai pas formelle informatique de formation, cependant, et si souvent, ce n'est pas tout à fait comprendre le jargon utilisé quand les gens écrivent sur Hadoop, d'où ma question ici.
Que je suis l'espoir d'un haut niveau d'ensemble de Hadoop (sauf si il y a autre chose que je devrais utiliser?) et peut-être une recommandation pour une sorte de tutoriel/livre de texte.
Si, par exemple, je veux paralléliser un réseau de neurones que j'ai écrit en Python, où dois-je commencer? Est-il relativement méthode standard pour la mise en oeuvre de Hadoop avec un algorithme ou est-ce que chaque solution de problème très spécifique?
Apache page wiki décrit Hadoop comme "un cadre pour l'exécution d'applications sur de grandes cluster construit le matériel de base". Mais ce n'est que dire? J'ai entendu le terme de "Cluster Hadoop" et je sais que Hadoop est basé sur Java. Donc, est-ce à dire pour l'exemple ci-dessus j'aurais besoin d'apprendre le Java, configurer un cluster Hadoop sur, disons, un peu d'amazon serveurs, Jython-identifier mon algorithme avant de finalement la faire fonctionner sur le cluster à l'aide d'Hadoop?
Merci beaucoup pour toute aide!
source d'informationauteur iRoygbiv
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, pour utiliser Hadoop avec Python (à chaque fois que vous l'exécutez sur votre propre cluster, ou Amazon EMR, ou quoi que ce soit d'autre), vous auriez besoin d'une option appelée "Hadoop Streaming".
Lire la chapitre d'origine (lien mis à jour) de Hadoop Manuel pour avoir une idée de comment cela fonctionne.
Il y a aussi un grande bibliothèque "MrJob" qui simplifie l'exécution de Python emplois sur Hadoop.
Vous pouvez configurer votre propre cluster ou d'essayer de jouer avec Amazon Elastic Map Reduce. Le plus tard peut vous coûter quelque chose, mais parfois plus facile à exécuter au début. Il y a un bon tutoriel sur la façon d'exécuter Python avec Hadoop Streaming sur Amazon EMR. Il montre immédiatement un simple, mais son application pratique.
Pour apprendre à Hadoop lui-même, je vous recommande de lire l'un des livres là-bas. Ils disent que "Hadoop Dans L'Action" est de mieux en couvrant les choses pour ceux qui s'intéressent en Python/Hadoop Streaming.
Également noter que pour les tests et apprendre des choses que vous pouvez exécuter Hadoop en local sur votre machine sans avoir une réelle cluster.
Mise à JOUR:
Que pour la compréhension de la Carte de Réduire (qui est de savoir comment identifier et d'exprimer différents types de problèmes sur la Carte de Réduire langue) lire l'excellent article "MapReduce Modèles, Algorithmes, et les Cas d'Utilisation" avec des exemples en Python.
Je vous recommande de commencer par télécharger le Cloudera VM pour Hadoop qui est à peu près un standard dans de nombreuses industries, ces jours-ci et simplifie les Hadoop processus d'installation. Ensuite, suivez ce tutoriel pour le nombre de mots exemple qui est un standard bonjour équivalent dans le monde pour l'apprentissage de la Map/reduce
Avant cela, un moyen simple de comprendre map/reduce est en essayant python intégré map/reduce fonctions:
Ici le mappeur transforme les données en quadrature de chaque élément et le réducteur résume les carrés. Hadoop utilise juste ce à l'échelle grande échelle des calculs, mais vous avez besoin de trouver votre propre mappage et la réduction des fonctions.
Pour ceux qui aiment les MOOC comme une option, il est Intro à Hadoop et Mapreduce sur Udacity, réalisé en collaboration avec Cloudera. Pendant le cours, vous avez une chance d'installer Cloudera Hadoop de Distribution de la machine virtuelle localement et effectuer certaines map/reduce emplois sur un échantillon de jeux de données. Hadoop Streaming est utilisé pour l'interaction avec le cluster Hadoop et la programmation se fait en Python.
Pourquoi ne pas commencer à partir de la le travail original de google? Car c'est là où tout a commencé. Pour le parallélisme il ya beaucoup de différentes options à choisir à partir de ici
http://blog.doughellmann.com/2009/04/implementing-mapreduce-with.html
Doug solution n'est pas bon pour Google la production à grande échelle, comme c'est juste un wrapper mince sur Python multitraitement de la piscine (il utilise seulement une machine, même si elle peut utiliser de nombreux cœurs sur cette machine). Mais c'est assez pour vous obtenir a commencé, et il est facile de voir ce qu'il fait.
Pas facile. La Communication entre les nœuds seraient plus d'ennuis que cela vaut la peine. Vous pouvez, cependant, exécuter plusieurs instances du réseau, afin d'augmenter le débit.
ML problèmes sont souvent très facile à paralléliser - vous l'exécutez, un autre réseau de neurones sur chaque nœud. Gradient décent peut être un peu délicat, que le dégradé décent est très linéaire, mais vous pouvez aussi utiliser une autre méthode d'optimisation (essayez plusieurs tailles de pas, et de choisir qui est le meilleur).