Comment exécutez-vous une commande shell Unix (par exemple awk one liner) sur un cluster en parallèle (étape 1) et ramenez les résultats à un nœud central (étape 2)? Mise à jour: Je viens de trouver http://blog.last.fm/2009/04/06/mapreduce-bash-script Il semble faire exactement ce dont j'ai besoin.Comment puis-je implémenter MapReduce en utilisant des commandes shell?
Répondre
Si tout ce que vous essayez de faire est de déclencher un tas de commandes à distance, vous pouvez simplement utiliser Perl. Vous pouvez "ouvrir" une commande ssh et rediriger les résultats vers perl. (Vous devez bien sûr de mettre en place des clés pour permettre un accès sans mot de passe)
open (REMOTE, "ssh [email protected] \"myScript\"|");
while (<REMOTE>)
{
print $_;
}
Vous voudriez concevoir une boucle avec vos noms de machine, et déclencher un pour chacun. Après cela, faites simplement des lectures non bloquantes sur les handles de fichiers pour récupérer les données dès qu'elles sont disponibles.
parallel peut être installé sur votre noeud central et peut être utilisé pour exécuter une commande sur plusieurs machines.
Dans l'exemple ci-dessous, plusieurs connexions ssh sont utilisées pour exécuter des commandes sur les hôtes distants. (-j est le nombre de tâches à exécuter en même temps sur le noeud central). Le résultat peut ensuite être redirigé vers des commandes pour effectuer l'étape "réduire". (trier puis uniq dans cet exemple).
parallèles -j 50 ssh {} "ls" ::: host1 host2 hostn | trier | uniq -c
Cet exemple suppose « connexion ssh sans clé » a été mis en place entre le noeud central et toutes les machines du cluster.
Il peut être difficile d'échapper correctement les caractères lors de l'exécution de commandes plus complexes qui "ls" à distance, vous devez parfois échapper le caractère d'échappement. Vous mentionnez bashreduce, cela peut simplifier cela.
- 1. Exécution des commandes du shell sans fenêtre shell
- 2. Un serveur web peut-il être implémenté en utilisant mapreduce?
- 3. Commandes Emacs et Long Shell
- 4. envoyer des commandes SCSI en utilisant C#
- 5. Plusieurs commandes sur une machine distante utilisant un script shell
- 6. Comment envoyer/recevoir des SMS en utilisant les commandes AT?
- 7. Comment envoyer des commandes AT GSM en utilisant python?
- 8. Comment exécuter des commandes CMD dans flex en utilisant actionscript?
- 9. commandes shell en cours d'exécution avec gnu clisp
- 10. Comment faire pour supprimer des collections temporaires MapReduce dans mongoDB
- 11. Obtenir des commandes précédemment tapées en python
- 12. Comment implémenter un comparateur utilisant des génériques?
- 13. Comment implémenter Bitcount en utilisant uniquement des opérateurs Bitwise?
- 14. Comment implémenter une fonction getter (en utilisant des callbacks)
- 15. comment implémenter des fil d'Ariane en utilisant Zend_Navigation
- 16. Comment implémenter l'analyse en utilisant la priorité des opérateurs?
- 17. Python Shell, la consignation des commandes pour Easy réexécution
- 18. Exécuter automatiquement des commandes lors du lancement du shell python
- 19. implémenter les commandes ioctl() dans FreeBSD
- 20. Comment implémenter l'adressage WS en utilisant WCF?
- 21. Exécution de commandes shell dans ASP.NET
- 22. C#: Problème lors de l'exécution des commandes du shell
- 23. Un moyen d'exécuter des commandes shell sur Android par programme?
- 24. Puis-je interroger une vue dans CouchDB en utilisant mapreduce?
- 25. exécuter plusieurs commandes shell avec php nohup
- 26. MongoDB: Terrible MapReduce Performance
- 27. Comment implémenter un 'FileUploadCommand' en utilisant OpenFileDialog dans Silverlight?
- 28. shell d'écriture de script bash commandes
- 29. système de programmation MapReduce en java-actionscript
- 30. Shell - Comment trouver le répertoire de certaines commandes?